SQL:REGEX MATCH - 字符后跟引号内的数字

时间:2014-12-12 00:02:49

标签: sql regex numbers character

我在sql中有一个列,其中包含双引号内的值,如“P1234567”,“P1234”等。

我只需要识别以字母P开头的列,后面只跟七个数字(数字)。我试过像“P [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]”这样的列,但它没有似乎工作。

有人可以纠正我或指出一个可以帮助我的线程吗?

由于

2 个答案:

答案 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}"'

(更新以匹配问题的双引号部分,我误解了开头)