1

次のクエリがあり、ハイフンが欠落しているMACアドレスを更新していますが、すでにそれらを持っている他の人にとっては、それらをヌルに変更しています。1 つの列の値を更新してみてください。

UPDATE mytable SET MAC =
CASE
 WHEN MAC NOT LIKE '%-%' 
  THEN UPPER(CONCAT(SUBSTR(MAC,1,2),'-', SUBSTR(MAC,3,2),'-', SUBSTR(MAC,5,2),'-', SUBSTR(MAC,7,2),'-', SUBSTR(MAC,9,2),'-', SUBSTR(MAC,11,2)))
 END;

どんな提案も素晴らしいでしょう。

ありがとう

4

2 に答える 2

3

ELSE値を現在の値に設定するケースを追加するだけです:

UPDATE mytable SET MAC =
CASE
 WHEN MAC NOT LIKE '%-%' 
  THEN UPPER(CONCAT(SUBSTR(MAC,1,2),'-', SUBSTR(MAC,3,2),'-', SUBSTR(MAC,5,2),'-', SUBSTR(MAC,7,2),'-', SUBSTR(MAC,9,2),'-', SUBSTR(MAC,11,2)))
  /* Else case sets it to its current value to avoid NULL */
  ELSE MAC
 END;

句を使用して、WHERE更新してはならない行を最初から一致させないようにすることもできます。適用する他の条件がない限り、これはおそらくこのインスタンスで実行するより適切なアクションです。CASE

UPDATE mytable 
SET MAC = UPPER(CONCAT(SUBSTR(MAC,1,2),'-', SUBSTR(MAC,3,2),'-', SUBSTR(MAC,5,2),'-', SUBSTR(MAC,7,2),'-', SUBSTR(MAC,9,2),'-', SUBSTR(MAC,11,2)))
WHERE MAC NOT LIKE '%-%'
于 2013-01-11T17:31:59.190 に答える
1
UPDATE mytable 

SET MAC = UPPER(CONCAT(SUBSTR(MAC,1,2),'-', SUBSTR(MAC,3,2),'-', SUBSTR(MAC,5,2),'-', SUBSTR(MAC,7,2),'-', SUBSTR(MAC,9,2),'-', SUBSTR(MAC,11,2)))

WHERE  MAC NOT LIKE '%-%' 
于 2013-01-11T17:34:41.720 に答える