ColdFusion中CFQuery筛选C后接数字的零件编号的WHERE语句写法
解决方案
你的需求是筛选Part_Number中以C开头,且紧跟C的第二个字符是数字的记录,之前的写法问题在于:
LIKE 'C%'会匹配所有C开头的条目,不管后续字符类型,所以会包含CBT-BGA这类不符合的;LIKE '^C[0-9]'无效是因为标准SQL的LIKE不支持正则的^和[]语法,只有部分数据库的扩展语法才兼容。
根据你使用的数据库类型,对应以下CFQuery的WHERE语句写法:
SQL Server
两种写法可选:
-- 写法1:字符串截取+数字判断 WHERE LEFT(Part_Number, 1) = 'C' AND ISNUMERIC(SUBSTRING(Part_Number, 2, 1)) = 1 -- 写法2:利用SQL Server的LIKE扩展语法 WHERE Part_Number LIKE 'C[0-9]%'
MySQL
直接用正则匹配最简洁:
WHERE Part_Number REGEXP '^C[0-9]'
Oracle
使用正则函数匹配:
WHERE REGEXP_LIKE(Part_Number, '^C[0-9]')
通用兼容写法(不依赖数据库正则特性)
如果不确定数据库类型,用字符范围判断也能实现:
WHERE LEFT(Part_Number, 1) = 'C' AND SUBSTRING(Part_Number, 2, 1) BETWEEN '0' AND '9'
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

