選択した回答の代わりに、このステートメントは、列から連続するスペース文字のスパンを削除し、スペースを単一のスペース文字に置き換えます。これはスペース文字でのみ機能し、特別な「トークン」文字は必要ありません(また、特別な「トークン」文字がソース列に表示されない必要はありません。
UPDATE mytable
SET mycol =
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
mycol
,SPACE(21),' ')
,SPACE(13),' ')
,SPACE(8),' ')
,SPACE(5),' ')
,SPACE(3),' ')
,SPACE(2),' ')
WHERE mycol LIKE '% %'
この式をテストとして実行するには、SELECTステートメントで使用します。
SELECT REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
mycol
,SPACE(21),' ')
,SPACE(13),' ')
,SPACE(8),' ')
,SPACE(5),' ')
,SPACE(3),' ')
,SPACE(2),' ') AS new_mycol
FROM mytable t
WHERE t.mycol LIKE '% %'
これは、置換を少なくするために、スペース文字のスパンを大きくして拡張できます。置換は、連続するスペース文字の最大スパンから始まり、その後、スペースのすべての出現を可能な限り効率的にキャッチするために、徐々に小さくなります。(これは最も「効率的な」アルゴリズムではありませんが、適切に機能します。)