このpostは、『2018-04-02-SQLServerで文字列内全ての空白(半角・全角)を除去する』の焼き直しです。 あまりにも昔の同内容の記事にアクセスが続いていたので、放置していたところを描き増しました。


左右のスペースを除去する

左右のスペースを除去する場合、LTRIM()RTRIM()を組み合わせることで左右からスペースを除去することができる。

SELECT LTRIM(RTRIM('  いろ はに ほへと  ')) AS result

--- |    result    |
--- | ------------ |
--- | いろ はに ほへと |

中間のスペースを除去する

指定された整数のUnicode文字を返す、NCHAR関数を使ってREPLACEする。

  • 12288: 全角スペース
  • 0x0020: 半角スペース

以下の例では、まずREPLACE('  いろ はに ほへと ', ' ', '')で半角スペースを除去し、 その結果から全角スペースを除去する。

SELECT REPLACE(REPLACE('  いろ はに ほへと ', ' ', ''), NCHAR(12288), '') AS result

--- |  result    |
--- | ---------- |
--- | いろはにほへと |

通常のSQL文では、半角スペースを直接指定することが一般的だと思いますが、 半角スペースであることを明示したい場合にREPLACE(REPLACE('  いろ はに ほへと ', NCHAR(0x0020), ''), NCHAR(12288), '')のようなやり方は有効かと思います。