You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MySQL查询将数据库列中的Title Case格式文本转换为Sentence Case格式

如何用MySQL查询将数据库列中的Title Case格式文本转换为Sentence Case格式

嘿,我来帮你搞定这个MySQL文本格式转换的问题!要把列里那种每个单词首字母都大写的标题格式(Title Case)转成只有每个句子开头首字母大写的句子格式(Sentence Case),咱们可以用MySQL自带的字符串函数组合来实现,我给你一步步讲清楚:

先再明确下需求的前后对比,方便你对照:

原始Title Case文本:
This Is A Dog. That Is A Cat.

期望的Sentence Case输出:
This is a dog. That is a cat.

方法一:用REGEXP_REPLACE(MySQL 8.0及以上版本推荐)

如果你的MySQL是8.0或更高版本,直接用正则替换会非常灵活,这是最省心的方案。假设你的表名是your_table,要处理的列是your_column,可以先跑个SELECT测试效果,没问题再执行更新:

-- 先测试转换效果,确认没问题再执行更新
SELECT 
  your_column AS 原始文本,
  REGEXP_REPLACE(
    CONCAT(
      UPPER(SUBSTRING(LOWER(your_column), 1, 1)),
      SUBSTRING(LOWER(your_column), 2)
    ),
    '\\. ([a-z])',
    '. ' || UPPER('$1')
  ) AS 转换后文本
FROM your_table;

如果测试结果符合预期,就可以用UPDATE语句批量更新列内容:

UPDATE your_table
SET your_column = 
  REGEXP_REPLACE(
    CONCAT(
      UPPER(SUBSTRING(LOWER(your_column), 1, 1)),
      SUBSTRING(LOWER(your_column), 2)
    ),
    '\\. ([a-z])',
    '. ' || UPPER('$1')
  );

我给你拆解下这个语句的逻辑:

  1. 先用LOWER(your_column)把整个文本转成全小写
  2. 把文本的第一个字符转成大写,再和后面的小写内容拼接,确保第一个句子的开头是大写
  3. 最后用REGEXP_REPLACE匹配所有“句号+空格+小写字母”的位置,把那个小写字母替换成大写,这样每个后续句子的开头就都大写了

要是你的文本里还有问号、感叹号结尾的句子,只要把正则表达式里的\\.改成[.!?]就行,比如把正则部分换成'([.!?]) ([a-z])',替换内容改成'$1 ' || UPPER('$2'),就能覆盖更多句子结尾的场景。

方法二:低版本MySQL(8.0以下)的替代方案

要是你的MySQL版本比较老,不支持REGEXP_REPLACE,那只能用嵌套的REPLACE函数来处理,但这种方法比较死板,只适合句子分隔符单一、常用开头字母不多的场景,比如:

UPDATE your_table
SET your_column = 
  CONCAT(
    UPPER(SUBSTRING(LOWER(your_column), 1, 1)),
    REPLACE(
      REPLACE(
        REPLACE(
          SUBSTRING(LOWER(your_column), 2),
          '. t', '. T'
        ),
        '. a', '. A'
      ),
      '. i', '. I'
    )
    -- 这里可以继续添加其他常见开头字母的替换,比如'. h'→'. H'之类的
  );

不过这种方法显然不够灵活,能覆盖的场景有限,要是有条件的话,还是建议升级到MySQL 8.0以上版本用方法一。

重要提醒

不管用哪种方法,执行UPDATE之前一定要先备份数据,或者先用SELECT语句测试转换效果,避免误改数据!

备注:内容来源于stack exchange,提问作者Photon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:37:59