この文字列を削除したい (これらの文字列は 1 つの列に格納されています)
[17332] Rohayati Bakri [20611] Nazrie Haslieanie [20612] Nur Izzati
これに(これも単一の列に保存されます)
Rohayati Bakri, Nazrie Haslieanie, Nur Izzati
Mysql クエリのみを使用します。参照 ID -> [xxxxx] はすべて同じ長さです。
出来ますか?
非常に一般的なレベルで試すことができます
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')
WHERE SomeOtherColumn LIKE '%PATTERN%'
あなたの場合、これらはエスケープされたと言っていますが、どのようにエスケープされたかを指定していないため、GREATERTHAN にエスケープされたとしましょう
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')
WHERE articleItemLIKE '%GREATERTHAN%'
クエリは実際には文字列内で動作するため、パターン マッチングを行う WHERE 句はパフォーマンスを向上させる可能性が高く、実際にはサーバーにより多くの作業が発生します。このクエリのパフォーマンスを向上させる別の WHERE 句メンバーがない限り、次のように単純に更新できます。
UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '<')
まったく別の角度から入ります:
これは、データを選択するときに行うことができます (保存するときではありません)。
代わりに:
SELECT MyURLString From MyTable
できるよ
SELECT REPLACE (MyURLString, 'GREATERTHAN', '<') as MyURLString From MyTable
これは正規表現で行うことができます。
SELECT REPLACE(column, '\[[0-9]*\]', '') FROM table;
MySQL がそれらをサポートしている場合。残念ながら、MySQL は での正規表現をサポートしていませんREPLACE
。
しかし、あなたはそれを行うことができますUDF
. ここにあなたを助けるかもしれない投稿があります。
トリム機能も試すことができます
UPDATE table_name SET col_name = SUBSTRING(col_name, 7)
最初の 7 文字がトリミングされます。