6

大規模なデータベースで単一のバックスラッシュを置き換えようとしています。1 つの列に対して Update Replace クエリを実行しようとしましたが、単一のバックスラッシュを置き換える方法がわかりません。不適切な更新が行われたため、これらのスラッシュを別の文字に変更する必要があります。これらは何もエスケープしておらず、関連する機能を実行していません。

SELECT
REPLACE (
    "Some\s string\s with slashe\s",
    '\\',
    '  something  '
)

これを実行すると、出力は次のようになります。

単一のスラッシュで真の置換を行う方法はありますか? replace パラメーターに何を入力しても、単一のバックスラッシュが削除されるだけで、実際には置き換えられません。これがバグなのか、何かが足りないだけなのかはわかりません。

私が試してみました:

SELECT
REPLACE (
    "Some\s string\s with slashe\s",
    '\',
    '  something  '
)

そして私は得る:

[Err] 1064 - SQL 構文にエラーがあります。1 行目の '\')' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

3

REPLACE( )エスケープする必要はありません

select replace("Some\s string\s with slashe\s", '\\', '  something  ');

更新 1

永久に交換したいと思います。右?使用しUPDATEないSELECT

UPDATE tableName
SET    columnName = replace(columnName, '\\', '#');
于 2012-08-08T15:20:45.020 に答える
-2

replace() のパラメータはエスケープする必要はありません:

select replace('A\B\C', '\', '\');

出力:

A\\\\B\\C

したがって、これは機能します:

select Name from T where Name = replace('A\\B\C', '\', '\\');

ここに見られるように

于 2012-08-08T15:18:46.777 に答える