规范字段中的文本

时间:2020-06-06 00:22:13

标签: mysql sql string sql-update

我有一个像'DOOR-LEFT'这样的值,我想将其更改为'Door-LEFT'。

我在此网站上遇到此查询:

UPDATE tbl
SET field1 = CONCAT(UCASE(LEFT(field1, 1)), 
                             LCASE(SUBSTRING(field1, 2)));

以上查询将“ DOOR-LEFT”更改为“ Door-left”。我不希望-之后有任何更新。因此它应该是“ Door-LEFT”。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用sustring_index()来拆分'-'上的字符串,然后使用现有的逻辑:

update tbl
set field = concat(
    upper(left(substring_index(field1, '-', 1), 1)),
    lower(substr(substring_index(field1, '-', 1), 2)),
    '-',
    upper(substring_index(field1, '-', -1))
)

对于您的示例字符串,字符串末尾的upper()并不是严格要求的,而示例字符串都是大写的。我故意将其保留,以防其他情况下有用(并且无论如何也不会造成伤害)。