2016-05-18 39 views
-2

我的要求是使用SQL Server regex来搜索列值,例如“以C开头,后跟四个连续数字”。SQL Server正则表达式搜索

说我的表包含以下数据:

Id Num 
--- ---- 
1  C1234 
2  C23215 
3  C4321 XYZ 
4  Z1234 
5  C4521 

和查询只会得到的结果C1234和C4521。

我试过这个select * from Mytable where Num like 'c[0-9][0-9][0-9][0-9]'但没有得到想要的结果。

请帮帮我。

+0

sql server不支持正则表达式。这是patindex。 –

+0

好吧,那么如何使用'patindex'来实现? –

回答

0

这是工作的罚款:

DECLARE @t TABLE (Id INT, Num VARCHAR(MAX)) 
INSERT INTO @t 
VALUES (1, 'C1234'), 
     (2, 'C23215'), 
     (3, 'C4321 XYZ'), 
     (4, 'Z1234'), 
     (5, 'C4521') 

SELECT * 
FROM @t 
WHERE Num LIKE 'c[0-9][0-9][0-9][0-9]' 

输出:

Id Num 
1 C1234 
5 C4521 

这个问题可能是你使用的是区分大小写的归类或c是从其他语言的字母或你有串一些不可见的字符。尝试更改为大写Cselect len(Num)以查看C1234的长度是否确实为5.

+1

就像你说的,但没有结果。 –

+0

也许你有无形的角色。见编辑的答案。 –

+0

我不这么认为。没有得到任何结果,零行返回。 –