の列値があるとしましょう'1|2|3|4|5'
。これらの値は配列の文字列表現であり、文字列内の単一の値を (整数で) 削除して、'1|2|4|5'
. 削除される整数が文字列のどこにでもある可能性がある場合、MySQL でこれを行う最も効率的な方法は何ですか?
2 に答える
1
次のようなものを使用できます。
UPDATE yourtable
SET col = TRIM(BOTH '|' FROM REPLACE(
REPLACE(
CONCAT('|',REPLACE(col, '|', '||'), '|'),
'|3|', '')
, '||', '|')
)
ここでは、すべてを2倍に|
して、最初に1つ、最後に1つ||
追加します。このように、すべての要素は開始時と終了時|
に独自のものを持っています。|
|
|3|
これで、空の文字列に安全に置き換えることができます。
ここで、doubleをに変換し直し、文字列をトリミングして、最終的に最初と最後のを削除する必要が||
あります|
。|
ここで動作するのを見てください。
要素3が複数回存在できないことが確実な場合は、への2倍|
をスキップでき、 。||
に置き換える必要があります。残りは同じです。|3|
|
于 2013-01-29T15:24:05.063 に答える
0
update table set col=replace ( col, '3','')
これにより、列で大文字と小文字が区別される検索が実行されます。巨大なテーブルの場合は、この列にインデックスを付けてください。結果はかなり速くなります。
于 2013-01-29T15:04:22.007 に答える