我在sql中有一个列,其中包含双引号内的值,如“P1234567”,“P1234”等。
我只需要识别以字母P开头的列,后面只跟七个数字(数字)。我试过像“P [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]”这样的列,但它没有似乎工作。
有人可以纠正我或指出一个可以帮助我的线程吗?
由于
答案 0 :(得分:0)
如何使用长度和isnumeric:
Select
*
from
mytable
where
mycolumn like '"P%'
and len(mycolumn) = 10 --2 chars for quotes + 1 for 'P' + 7 for the digits
and isnumeric(substring(mycolumn, 3, 7))=1
这个答案适用于SQL Server,其他DBMS的长度可能有不同的语法
答案 1 :(得分:0)
标准SQL没有正则表达式支持,但大多数SQL引擎都在标准SQL之上添加了正则表达式扩展。所以,例如,如果你使用MySQL,那么你就是这样做的:
... WHERE column REGEXP '^"P[0-9]{7}"'
如果您正在使用Postgres,那将是:
... WHERE column ~ '^"P[0-9]{7}"'
(更新以匹配问题的双引号部分,我误解了开头)