直到现在,我像这样更新数据库中的value字段:
'UPDATE lignefraishorsforfait '
. 'SET lignefraishorsforfait.libelle = CONCAT("REFUSE : ", libelle) '
但是,我想检查一下是否避免多次出现“ REFUSE”值。如果已经存在,则值保持不变。如果不是,则使用“ REFUSE”进行拒绝。我尝试了这个:
'UPDATE lignefraishorsforfait '
. 'SET lignefraishorsforfait.libelle = '
. 'CASE WHEN libelle LIKE "%REFUSE%" THEN libelle ELSE CONCAT("REFUSE : ", libelle) END,'
但是由于libelle保持不变,所以这是行不通的(我用不包含值“ REFUSE”的行进行了测试)。 同样用“”代替“”,会引发错误
你能帮我吗?
答案 0 :(得分:1)
您还有一个逗号:
UPDATE lignefraishorsforfait
SET libelle = (CASE WHEN libelle LIKE '%REFUSE%' THEN libelle ELSE CONCAT('REFUSE : ', libelle) END);
但是,您应该将其缩短为:
UPDATE lignefraishorsforfait
SET libelle = CONCAT('REFUSE : ', libelle)
WHERE libelle NOT LIKE '%REFUSE%';
答案 1 :(得分:0)
You can do this:
UPDATE lignefraishorsforfait
lignefraishorsforfait.libelle =
CONCAT("REFUSE : ", libelle) where libelle not like 'REFUSE : %';