特定の都市のすべての通りを含むデータベースがあります。ただし、名前の末尾は省略されています。たとえば、Highwaystreet ではなく Highwaystr です。
これらすべての道路を同時に更新したいと考えています。
私はこれを試しました:
UPDATE bestrating SET STRAATNAAM = '%STREET' WHERE STRAATNAAM LIKE '%STR'
しかし、これはすべての通り名を「%Street」に置き換えています。
特定の都市のすべての通りを含むデータベースがあります。ただし、名前の末尾は省略されています。たとえば、Highwaystreet ではなく Highwaystr です。
これらすべての道路を同時に更新したいと考えています。
私はこれを試しました:
UPDATE bestrating SET STRAATNAAM = '%STREET' WHERE STRAATNAAM LIKE '%STR'
しかし、これはすべての通り名を「%Street」に置き換えています。
使用するREPLACE
UPDATE bestrating
SET STRAATNAAM = REPLACE(STRAATNAAM, ' STR', ' STREET')
WHERE STRAATNAAM LIKE '% STR'
最後にテキストを変更するだけの場合、より簡単なのは次のとおりです。
UPDATE bestrating SET STRAATNAAM = STRAATNAAM +'EET' WHERE STRAATNAAM LIKE '%STR'
で使用されるワイルドカード構文LIKE
が適用できる唯一の場所はLIKE
andですPATINDEX
(そして、おそらくいくつかの FTS 述語 - 私は使用しません)。SET
an 句ではサポートされておらずUPDATE
、SQL Server は正規表現などを直接サポートしていません。
上記の機能は、検索されたテキストが置換テキストのプレフィックスである場合に機能します。そうでない場合は、次のようにします。
UPDATE bestrating
SET STRAATNAAM = SUBSTRING(STRAATNAAM,1,LEN(STRAATNAAM)-LEN('STR')) +'STREET'
WHERE STRAATNAAM LIKE '%STR'
つまり、検索されたテキストの長さだけ文字列の長さを減らしてから、置換文字列全体を適用します。