【问题标题】:normalize text in a field规范化字段中的文本
【发布时间】:2020-06-06 00:22:13
【问题描述】:

我有一个值类似于“DOOR-LEFT”的字段,我想将其更改为“Door-LEFT”。

我在这个网站上遇到了这个查询:

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

上述查询将“DOOR-LEFT”更改为“Door-left”。我不希望 - 之后的任何内容被更新。所以它应该是“左门”。

我该怎么做?

【问题讨论】:

  • 在使用来自本网站(或任何其他网站)的内容时,请使用署名。见How to reference material written by others
  • 你明白了。谢谢
  • 我的印象是你的“你明白了。谢谢”意味着你将编辑链接和归属到你的问题。请不要拖延。
  • this answerJohn Woo 更改为“如何将整个字符串小写在MYSQL 中保持第一个大写”作为来源?
  • 我在 Stack Overflow 和其他几个网站上看到了很多帖子。所以我不记得了。当我说“你明白了”时,我的意思是我会继续前进。如果你想让我猜,那么肯定 John Woo 的解决方案与我遇到的其他帖子相似。

标签: mysql sql string sql-update


【解决方案1】:

您可以使用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() 不是您的示例字符串所必需的,它以全部大写开头。我故意留下它,以防它可能对其他情况有用(而且它无论如何都不会受到伤害)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2011-03-04
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多