MySql在案例中忽略

时间:2014-12-10 15:01:16

标签: mysql insert case ignore

Update acc
SET acc.lat = CASE
   WHEN acc.lat <> '' THEN INSERT (acc.lat,3,0,'°')
   WHEN acc.lat = '' THEN acc.lat = ''
   WHEN acc.lat LIKE '°' THEN (do nothing)

一切正常,但我无法忽略°所以每次运行时都会添加另一个°

2 个答案:

答案 0 :(得分:0)

对于你的上一个条款,你不希望它成为

WHEN acc.lat LIKE '%°' THEN (do nothing)

所以它匹配以°结尾的任何字符串?

答案 1 :(得分:0)

您可以通过引用原始值来执行case中的“忽略”:

Update acc
    SET acc.lat = (CASE WHEN acc.lat <> '' THEN INSERT(acc.lat, 3, 0, '°')
                        WHEN acc.lat = '' THEN ''
                        WHEN acc.lat LIKE '°' THEN acc.lat
                   END);

这会将不匹配的值设置为NULL。您可能打算这样做:

update acc
    then lat = concat(lat, '°')
    where lat not like '%°' and lat <> '';

这会将符号放在具有值的纬度的末尾。