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

MySQL如何将字符串首个空格替换为换行符?

这个问题很常见,刚好有两种靠谱的解决办法,分情况给你讲清楚:

方法1:兼容所有MySQL版本(LOCATE + INSERT 组合)

如果你的MySQL版本比较旧(比如5.x系列),可以用LOCATE和INSERT函数的组合来实现,这是兼容性最好的方案:

核心思路

先用LOCATE(' ', 你的字段名)定位到字符串中第一个空格的位置,再用INSERT()函数把这个位置的单个空格替换成换行符(MySQL中换行符用CHAR(10)表示,对应ASCII码的换行)。

示例SQL

SELECT 
  INSERT(your_column, LOCATE(' ', your_column), 1, CHAR(10)) AS replaced_string
FROM your_table;

参数解释

  • LOCATE(' ', your_column):返回目标字段中第一个空格的索引位置
  • INSERT(str, pos, len, newstr):在字符串str的pos位置,替换长度为len的内容为newstr。这里我们只替换1个字符(空格),所以len设为1,替换内容是CHAR(10)(换行符)
方法2:MySQL 8.0+ 专属(正则表达式替换)

如果你的MySQL版本是8.0及以上,用正则替换会更简洁,直接用REGEXP_REPLACE函数指定只替换第一次匹配的空格:

示例SQL

SELECT 
  REGEXP_REPLACE(your_column, ' ', CHAR(10), 1, 1) AS replaced_string
FROM your_table;

参数解释

  • REGEXP_REPLACE(str, pattern, replace, pos, occurrence):最后两个参数1,1分别表示「从字符串第1位开始匹配」和「只替换第1次匹配到的内容」
  • 这里的匹配模式' '就是单个空格,替换目标是CHAR(10)(换行符)

测试你的示例字符串

用你的例子验证一下,两种方法都能得到预期结果:

-- 方法1测试
SELECT INSERT('LSRNABC1234 This is a sample', LOCATE(' ', 'LSRNABC1234 This is a sample'), 1, CHAR(10)) AS result;

-- 方法2测试
SELECT REGEXP_REPLACE('LSRNABC1234 This is a sample', ' ', CHAR(10), 1, 1) AS result;

返回结果:

LSRNABC1234
This is a sample

内容的提问来源于stack exchange,提问作者Syed Mudabbir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:08:20