0

特定の都市のすべての通りを含むデータベースがあります。ただし、名前の末尾は省略されています。たとえば、Highwaystreet ではなく Highwaystr です。

これらすべての道路を同時に更新したいと考えています。

私はこれを試しました:

UPDATE bestrating SET STRAATNAAM = '%STREET' WHERE STRAATNAAM LIKE '%STR'

しかし、これはすべての通り名を「%Street」に置き換えています。

4

2 に答える 2

3

使用するREPLACE

UPDATE bestrating 
SET STRAATNAAM = REPLACE(STRAATNAAM, ' STR', ' STREET') 
WHERE STRAATNAAM LIKE '% STR'
于 2013-04-11T09:17:51.440 に答える
1

最後にテキストを変更するだけの場合、より簡単なのは次のとおりです。

UPDATE bestrating SET STRAATNAAM = STRAATNAAM +'EET' WHERE STRAATNAAM LIKE '%STR'

で使用されるワイルドカード構文LIKEが適用できる唯一の場所はLIKEandですPATINDEX(そして、おそらくいくつかの FTS 述語 - 私は使用しません)。SETan 句ではサポートされておらずUPDATE、SQL Server は正規表現などを直接サポートしていません。


上記の機能は、検索されたテキストが置換テキストのプレフィックスである場合に機能します。そうでない場合は、次のようにします。

UPDATE bestrating
SET STRAATNAAM = SUBSTRING(STRAATNAAM,1,LEN(STRAATNAAM)-LEN('STR')) +'STREET'
WHERE STRAATNAAM LIKE '%STR'

つまり、検索されたテキストの長さだけ文字列の長さを減らしてから、置換文字列全体を適用します。

于 2013-04-11T09:21:15.470 に答える