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

MySQL如何将列结果截断至首个换行符,仅保留第一句内容?

按首个换行符截断MySQL列值,仅保留第一行

嘿,这个需求我太熟悉了!用SUBSTRING()按字符数截取确实不灵活,要按换行符分割并保留第一行,咱们可以结合MySQL的字符串函数轻松实现,下面分几种情况给你具体方案:

核心思路

通过LOCATE()函数定位到第一个换行符的位置,再用LEFT()或SUBSTRING()截取从开头到该位置之前的内容;如果字段里没有换行符,就直接返回原内容。

针对不同换行符的解决方案

1. 处理Unix/Linux风格换行(\n)

这是最常见的换行格式,直接定位\n即可:

SELECT 
  CASE 
    WHEN LOCATE('\n', your_column) > 0 THEN LEFT(your_column, LOCATE('\n', your_column) - 1)
    ELSE your_column
  END AS first_line_content
FROM your_table;

这里用LEFT()比SUBSTRING()写法更简洁,效果完全一致。

2. 处理Windows风格换行(\r\n)

Windows系统的换行是回车+换行组合,需要定位\r\n:

SELECT 
  CASE 
    WHEN LOCATE('\r\n', your_column) > 0 THEN LEFT(your_column, LOCATE('\r\n', your_column) - 1)
    ELSE your_column
  END AS first_line_content
FROM your_table;

3. 兼容两种换行格式

如果你不确定数据里是哪种换行符,可以优先检查\r\n,再检查\n,确保所有情况都覆盖:

SELECT 
  CASE 
    WHEN LOCATE('\r\n', your_column) > 0 THEN LEFT(your_column, LOCATE('\r\n', your_column) - 1)
    WHEN LOCATE('\n', your_column) > 0 THEN LEFT(your_column, LOCATE('\n', your_column) - 1)
    ELSE your_column
  END AS first_line_content
FROM your_table;

可选优化:去除首尾空白

如果第一行前后可能有多余的空格或制表符,可以加上TRIM()函数清理:

SELECT 
  CASE 
    WHEN LOCATE('\r\n', your_column) > 0 THEN TRIM(LEFT(your_column, LOCATE('\r\n', your_column) - 1))
    WHEN LOCATE('\n', your_column) > 0 THEN TRIM(LEFT(your_column, LOCATE('\n', your_column) - 1))
    ELSE TRIM(your_column)
  END AS first_line_content
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:40:32