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

如何在MySQL中查找含回车的列?SQL初学者查询匹配问题

嘿,作为SQL初学者碰到这种带特殊字符的匹配问题太正常了,我来帮你搞定这两个需求~

1. 匹配带或不带回车的'ABCDEF'

你可以通过两种思路来实现:要么移除字段里的回车后再匹配,要么直接匹配包含可选回车的模式。

方法一:移除回车后匹配

用REPLACE()函数把字段中的回车字符(MySQL中用CHAR(13)表示)去掉,再和目标值'ABCDEF'对比。如果不确定是回车还是换行(有时候可能两者都存在),可以嵌套替换同时处理两种字符:

-- 仅处理回车
SELECT id 
FROM `a_table` 
WHERE REPLACE(col_value, CHAR(13), '') = 'ABCDEF';

-- 同时处理回车和换行
SELECT id 
FROM `a_table` 
WHERE REPLACE(REPLACE(col_value, CHAR(13), ''), CHAR(10), '') = 'ABCDEF';

方法二:用正则表达式匹配可选回车

MySQL的REGEXP支持正则匹配,你可以用[[:cntrl:]]?来匹配可选的控制字符(包括回车、换行等),这样不管目标值中间有没有回车都会被匹配到:

SELECT id 
FROM `a_table` 
WHERE col_value REGEXP 'ABC[[:cntrl:]]?DEF';

如果只想精准匹配回车,也可以直接写CHAR(13)到正则里:

SELECT id 
FROM `a_table` 
WHERE col_value REGEXP CONCAT('ABC', CHAR(13), '?DEF');
2. 在MySQL中找出包含回车的列

要筛选出col_value里包含回车的记录,同样有两种常用方法:

方法一:用LIKE匹配回车

通过CONCAT()把通配符和回车字符拼接,用LIKE来匹配包含回车的字段:

SELECT id, col_value 
FROM `a_table` 
WHERE col_value LIKE CONCAT('%', CHAR(13), '%');

方法二:用正则表达式匹配

正则的方式更直观,直接匹配字段中是否存在回车字符:

SELECT id, col_value 
FROM `a_table` 
WHERE col_value REGEXP CHAR(13);

如果想找出所有包含控制字符(比如回车、换行、制表符等)的记录,可以用[[:cntrl:]]这个正则类:

SELECT id, col_value 
FROM `a_table` 
WHERE col_value REGEXP '[[:cntrl:]]';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:24:16