我想以特定方式更新表 A 中的第 1 列:当列中的第三个字符是“_”时,我想插入前 2 个字符,如果第三个字符还有其他任何内容,我想保留它是。
例子:
|col1|
+--------+
|161_512 |
|16_1217 |
|161_512 |
|161512 |
|17_0117 |
|1615_12 |
预期结果:
|col1|
+--------+
|161_512 |
|16 |
|161_512 |
|161512 |
|17 |
|1615_12 |
这就是我到目前为止所得到的 - 但它无法正常工作:
UPDATE table A SET col1 = CASE WHEN col1 LIKE '%_%' THEN ... ELSE col1;
最佳答案
如果您想匹配 LIKE
表达式中的文字下划线,您需要使用反斜杠对其进行转义。未转义的下划线表示匹配任何单个字符。但是,我会改写您的查询,使其使用 WHERE
子句来确定是否更新给定记录。
UPDATE table A
SET col1 = ...
WHERE col1 LIKE '__\_%'
请注意,LIKE __\_%
表示匹配任意两个字符,后跟文字下划线,再跟任何其他字符。
如果你觉得处理所有这些感觉不舒服,你总是可以使用子字符串来检查第三个字符的值:
UPDATE table A
SET col1 = ...
WHERE SUBSTRING(col1, 3, 1) = '_'
关于mysql - 第三个字符为 "_"时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514111/