我想搜索匹配名称后跟多个可变大小(包括没有数字)的字段,但我看不到如何使用PATINDEX和LIKE上的通配符来检测未知数量的数字。
这是我想检查的正则表达式:MYNAME [1-9] *
它必须识别MYNAME,MYNAME5,MYNAME12,MYNAME275,......
它不应该识别ANOTHERNAME,MYNAMEXX12,MYNAME12X5,MYNAME12X
PATINDEX和LIKE无法识别正则表达式上的*以指示可变位数。
你知道一种搜索零件尺寸可变的模式的方法吗?
谢谢。
DECLARE @Test TABLE (
Field VARCHAR(32)
)
INSERT @Test( Field )
VALUES
('MYNAME'),
('MYNAME5'),
('MYNAME12'),
('MYNAME275'),
('MYNAME275TEXT')
SELECT *
FROM @Test
WHERE (
( Field = 'MYNAME'
OR Field LIKE 'MYNAME[0-9]%'
)
AND Field NOT LIKE 'MYNAME[0-9]%[^0-9]%'
)
一点外卡(geddit?)猜测,不过,或许这个?
SELECT *
FROM (VALUES('MYNAME'),('MYNAME5'),('MYNAME12'),('MYNAME275'),('MYNAME654A'))V(N)
WHERE V.N = 'MYNAME'
OR (V.N LIKE 'MYNAME[0-9]%'
AND V.N NOT LIKE 'MYNAME[0-9]%[^0-9]');