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

MySQL中如何匹配后接空格的指定字符串(如CNA)

解决方案:匹配“CNA”后紧跟空格的字符串的SELECT语句

通用LIKE语句(适用于大多数数据库)

直接通过LIKE通配符精准匹配“CNA”后紧跟空格的场景:

SELECT column_name
FROM your_table
WHERE column_name LIKE '%CNA %';
  • 效果说明:
    • 匹配开头为“CNA ”的字符串(如CNA GOOD)
    • 匹配中间包含“CNA ”的字符串(如THE CNA IS HERE)
    • 自动排除DECNAT、CNASTA SPELLED WRONG这类“CNA”后无空格的情况

正则表达式增强版(针对严谨匹配需求)

如果需要避免“CNA”被包含在其他单词末尾(如XZCNA 这类场景),可以用正则限定“CNA”的前置边界:

MySQL/MariaDB

SELECT column_name
FROM your_table
WHERE column_name REGEXP '(^| )CNA ';
  • 解释:(^| )表示“CNA”要么在字符串开头,要么前面是空格;CNA 强制指定后面紧跟空格。

PostgreSQL

使用~操作符实现正则匹配:

SELECT column_name
FROM your_table
WHERE column_name ~ '(^| )CNA ';

SQL Server

SQL Server 2017+支持REGEXP_LIKE,低版本可用PATINDEX:

-- 2017+版本
SELECT column_name
FROM your_table
WHERE REGEXP_LIKE(column_name, '(^| )CNA ');

-- 低版本替代方案
SELECT column_name
FROM your_table
WHERE PATINDEX('%CNA %', column_name) > 0;

原方法无效的原因

  • 转义字符误用:若仅写LIKE '%CNA%'未指定后续空格,会匹配所有含“CNA”的字符串;错误转义空格也会导致匹配范围失控。
  • SUBSTRING_INDEX未做字符判断:仅提取含“CNA”的片段,未校验“CNA”后续是否为空格,无法过滤不符合要求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:55:27