MySQL中如何在WHERE条件的LIKE操作符中匹配两个换行符?
匹配LIKE操作符中的换行符解决方案
针对你要在LIKE条件里匹配两个连续换行符的需求,不同数据库有不同的可靠写法,我给你分场景说明:
MySQL 场景
在MySQL中,换行符对应的ASCII码是10,你有两种稳妥的实现方式:
- 直接使用转义字符
\n(如果你的SQL客户端有特殊转义规则,可能需要微调):
SELECT * FROM customer_address_entity_text WHERE `value` LIKE '%\n\n%';
- 用
CHAR()函数生成换行符,这种方式兼容性更强,不会受客户端转义设置影响:
SELECT * FROM customer_address_entity_text WHERE `value` LIKE CONCAT('%', CHAR(10), CHAR(10), '%');
PostgreSQL 场景
PostgreSQL里需要借助转义前缀E来识别换行转义符,或者用CHR()函数生成换行:
- 带转义前缀的写法:
SELECT * FROM customer_address_entity_text WHERE "value" LIKE E'%\\n\\n%';
- 用
CHR()函数的写法:
SELECT * FROM customer_address_entity_text WHERE "value" LIKE '%' || CHR(10) || CHR(10) || '%';
额外提示
如果不确定字段里的换行符是单纯的LF(\n)还是Windows系统的CRLF(\r\n),可以同时匹配两种格式,比如MySQL里可以这么写:
SELECT * FROM customer_address_entity_text WHERE `value` LIKE '%\r\n\r\n%' OR `value` LIKE '%\n\n%';
这样就能精准筛选出包含两个连续换行符的记录啦~
内容的提问来源于stack exchange,提问作者Attila Naghi
相关产品推荐
相关产品推荐

