如何在SQL Server中匹配F1AGE至F20AGE的记录?
解决方案:匹配F1AGE至F20AGE的SQL语句
原语句LIKE '%F[1-9]AGE%'仅能匹配单个数字的场景(F1-F9AGE),要覆盖10-20的两位数字情况,需根据你使用的数据库类型选择对应方案:
1. SQL Server / Oracle 等支持扩展LIKE语法的数据库
可以通过多条件OR组合覆盖所有区间,或使用PATINDEX函数实现精准正则匹配:
方案A:LIKE多条件组合
SELECT * FROM TEST WHERE QUESTION LIKE '%F[1-9]AGE%' -- 匹配F1-F9AGE OR QUESTION LIKE '%F1[0-9]AGE%' -- 匹配F10-F19AGE OR QUESTION LIKE '%F20AGE%' -- 匹配F20AGE
方案B:使用PATINDEX函数
PATINDEX支持正则式匹配,可简化为单条件:
SELECT * FROM TEST WHERE PATINDEX('%F([1-9]|1[0-9]|20)AGE%', QUESTION) > 0
2. MySQL / MariaDB
使用REGEXP(或RLIKE)操作符,通过正则表达式覆盖所有目标模式:
SELECT * FROM TEST WHERE QUESTION REGEXP 'F([1-9]|1[0-9]|20)AGE'
正则([1-9]|1[0-9]|20)表示三种匹配场景:1-9的单个数字、10-19的两位数字、以及20。
3. PostgreSQL
使用~操作符进行正则匹配:
SELECT * FROM TEST WHERE QUESTION ~ 'F([1-9]|1[0-9]|20)AGE'
内容的提问来源于stack exchange,提问作者TechApp
相关产品推荐
相关产品推荐

