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

如何用SQL LIKE匹配字符串中的A1至A20格式内容?

匹配TEST表中QUESTION字段包含A1-A20的SQL解决方案

问题分析

你原来的%A[1-9][2-0]%语句无效,原因有两点:

  1. 该模式要求A后必须跟两个字符,漏掉了A1-A9这类单数字后缀的内容;
  2. 字符范围[2-0]不符合ASCII顺序(2的编码大于0),实际是无效范围,无法匹配0-9的数字。

可行解决方案

方案1:用LIKE+OR组合精准匹配

通过拆分匹配规则,覆盖A1-A9、A10-A19、A20三个区间:

SELECT * FROM TEST 
WHERE QUESTION LIKE '%A[1-9]%' 
   OR QUESTION LIKE '%A1[0-9]%' 
   OR QUESTION LIKE '%A20%';
  • %A[1-9]%:匹配A1到A9
  • %A1[0-9]%:匹配A10到A19
  • %A20%:单独匹配A20

方案2:用正则表达式(支持正则的数据库)

如果你的数据库支持正则(如MySQL、PostgreSQL、SQL Server 2017+),可以用更简洁的正则表达式直接匹配目标范围:

-- MySQL/PostgreSQL 示例
SELECT * FROM TEST 
WHERE QUESTION REGEXP 'A(1[0-9]|[1-9]|20)';
-- SQL Server 2017+ 示例
SELECT * FROM TEST 
WHERE REGEXP_LIKE(QUESTION, 'A(1[0-9]|[1-9]|20)');

正则表达式说明:A(1[0-9]|[1-9]|20) 匹配以下三种情况:

  • A1[0-9]:A10到A19
  • A[1-9]:A1到A9
  • A20:精确匹配A20

注意事项

  • 避免使用%A[0-9]%或%A[0-9][0-9]%这类宽泛模式,会误匹配A0、A21、A100等超出范围的内容;
  • 如果需要确保匹配的是独立的A+数字(比如不匹配XA1或A1B),可以在正则中添加边界匹配,比如\bA(1[0-9]|[1-9]|20)\b(具体语法根据数据库调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:35:14