使用正则表达式在SELECT中设置LIKE的长度?

时间:2014-07-15 17:01:02

标签: sql-server ms-access

我有一个Access SQL查询,其中包含对

等文本的选择
SELECT column FROM table WHERE column LIKE "abc#####";

其中要查找的值的字符串长度为8个字符,以“abc”开头,以5个数字结尾。

我正在尝试将其转换为varchar列上的SQL Server(2005)查询,并首先想出这个:

SELECT column FROM table WHERE column LIKE 'abc_____';

但当然这与最后5个字符中的非数字值匹配。所以我一直在使用以下内容:

SELECT column FROM table WHERE column LIKE 'abc[0-9][0-9][0-9][0-9][0-9]';

这有效,但有没有更有效/可接受的方式来处理这种类型的选择? (是否有另一个特殊字符的作用类似于下划线_但是对于数字?)

2 个答案:

答案 0 :(得分:1)

DECLARE @pattern varchar(max) = 'abc#####'

SET @pattern = REPLACE(@pattern,'#','[0-9]')
SELECT column FROM table WHERE column LIKE @pattern

答案 1 :(得分:0)

试试这个:

SELECT column FROM table
WHERE substring(column, 1, 3) = 'abc'
AND substring(column, 4, LEN(column)-3) NOT LIKE '%[^0-9]%'

<强>参考

Repeating characters in T-SQL LIKE condition on SO