の列値があるとしましょう'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 に答える