如何通过SQL验证字符串是否包含指定的多个数字组合?
SQL字符串匹配:验证同时包含指定数字的条件写法
你原来的语句SELECT * FROM Book WHERE Category LIKE '%${13}%';是用来匹配**连续出现"13"**的字符串,但这不符合你要验证「同时包含1和3,或同时包含2和3」的需求,正确的写法需要拆分条件逻辑:
基础LIKE写法(兼容所有SQL数据库)
SELECT * FROM Book WHERE -- 同时包含数字1和3(顺序无关) (Category LIKE '%1%' AND Category LIKE '%3%') -- 或者同时包含数字2和3(顺序无关) OR (Category LIKE '%2%' AND Category LIKE '%3%');
逻辑说明:
LIKE '%1%'检查字符串中存在数字1,LIKE '%3%'检查存在数字3,用AND连接表示两个条件必须同时满足,也就是字符串同时包含1和3。- 两组条件用
OR连接,表示只要满足其中一组(要么同时有1和3,要么同时有2和3)就会被筛选出来。
正则表达式写法(部分数据库支持,如MySQL、PostgreSQL)
如果你的数据库支持正则表达式,可以用更简洁的写法:
MySQL 示例
SELECT * FROM Book WHERE Category REGEXP '1.*3|3.*1' OR Category REGEXP '2.*3|3.*2';
PostgreSQL 示例
SELECT * FROM Book WHERE Category ~ '1.*3|3.*1' OR Category ~ '2.*3|3.*2';
逻辑说明:
1.*3|3.*1表示字符串中存在1且存在3(不管谁在前谁在后),.*匹配任意长度的任意字符。- 同样用
OR连接两组正则条件,实现你需要的匹配规则。
内容的提问来源于stack exchange,提问作者EliTheKing
相关产品推荐
相关产品推荐

