搜索某个名称后跟任何数字(或没有数字)
Search for a certain name followed by any number (or no number)
我想搜索匹配名称后跟可变大小数字(包括无数字)的字段,但我看不到如何使用 PATINDEX 和 LIKE 上的通配符来检测未知数量的数字.
这是我要检查的正则表达式:MYNAME[1-9]*
它必须识别我的名字、我的名字5、我的名字12、我的名字275……
它不应该识别 ANOTHERNAME、MYNAMEXX12、MYNAME12X5、MYNAME12X
PATINDEX 和 LIKE 无法识别正则表达式中的 * 以指示可变位数。
您知道一种方法来搜索零件具有可变尺寸的模式吗?
谢谢。
有点不确定(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]');
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]%'
)
我想搜索匹配名称后跟可变大小数字(包括无数字)的字段,但我看不到如何使用 PATINDEX 和 LIKE 上的通配符来检测未知数量的数字.
这是我要检查的正则表达式:MYNAME[1-9]*
它必须识别我的名字、我的名字5、我的名字12、我的名字275……
它不应该识别 ANOTHERNAME、MYNAMEXX12、MYNAME12X5、MYNAME12X
PATINDEX 和 LIKE 无法识别正则表达式中的 * 以指示可变位数。
您知道一种方法来搜索零件具有可变尺寸的模式吗?
谢谢。
有点不确定(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]');
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]%'
)