web-dev-qa-db-ja.com

MySQLすべてのフィールドの最初の2文字を削除します

次のようなデータがあります。

C:10
R:200
N/A
E:3
N/A
N:77

各行の最初の2文字を削除し、N/Aで行をスキップしようとしています。SUBSTRINGでこれを行う方法を見つけようとしましたが、うまくいきませんでした。

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 1, LENGTH(d1_val)2)
13
Norse

試してみてください

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val <> 'N/A'
31
Kevin DiTraglia

複数の実行に関するより安全なクエリは、LIKE '_:%'を使用することです。

UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val LIKE '_:%'

C:10E:100などのように見えるすべての行が変更されますが、前の1回のクエリ実行後、10100は変更されません。

:の前に常に1文字あると仮定します。それ以上の場合はLIKE '%:%'を使用します)

6
Serge S.
UPDATE d1
SET d1_val = SUBSTRING_INDEX(d1_val , ":",-1);

仕事もしますが、「N/A」はそのままにしておきます。

0
Dirk Zaal