次のようなデータがあります。
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)
試してみてください
UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val <> 'N/A'
複数の実行に関するより安全なクエリは、LIKE '_:%'
を使用することです。
UPDATE d1
SET d1_val = SUBSTRING(d1_val, 3)
WHERE d1_val LIKE '_:%'
C:10
、E:100
などのように見えるすべての行が変更されますが、前の1回のクエリ実行後、10
、100
は変更されません。
(:
の前に常に1文字あると仮定します。それ以上の場合はLIKE '%:%'
を使用します)
UPDATE d1
SET d1_val = SUBSTRING_INDEX(d1_val , ":",-1);
仕事もしますが、「N/A」はそのままにしておきます。