考虑表barcode有一个名为b_values的列,其中的值以两种不同的格式存储。一个有破折号,另一个没有。
例如,XXXXXXXXXXXXXXX
-> XXX-XXXX-XXXXXXX-X
不带破折号的长度为15,带破折号的长度为18。
我试着跟随,但它没有工作。
UPDATE barcode b
SET b.barcode = CASE
WHEN b.barcode LIKE '%-%-%-%' THEN
b.barcode
WHEN b.barcode NOT LIKE '%-%-%-%' AND LENGTH(b.barcode) = 15 THEN
SUBSTR(b.barcode, 0, 3).CONCAT('-').CONCAT(SUBSTR(b.barcode, 4, 4)).CONCAT('-').
CONCAT(SUBSTR(b.barcode, 7, 7)).CONCAT('-').CONCAT(SUBSTR(b.barcode, 14, 1))
ELSE
b.barcode
END
我正试图在一个脚本,这将发现所有的价值观,没有破折号在同一列,并更新他们,包括破折号。
我不需要查询结果中的值。我正在尝试更新表中存储的值。
1条答案
按热度按时间kwvwclae1#
您可以按以下方式执行此操作:
Demo here