设置/大小写时值喜欢

时间:2019-02-25 16:56:53

标签: sql

直到现在,我像这样更新数据库中的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”的行进行了测试)。 同样用“”代替“”,会引发错误

你能帮我吗?

2 个答案:

答案 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 : %';