搜索某个名称后跟任意数字(或无数字)

问题描述 投票:0回答:2

我想搜索匹配名称后跟多个可变大小(包括没有数字)的字段,但我看不到如何使用PATINDEX和LIKE上的通配符来检测未知数量的数字。

这是我想检查的正则表达式:MYNAME [1-9] *

它必须识别MYNAME,MYNAME5,MYNAME12,MYNAME275,......

它不应该识别ANOTHERNAME,MYNAMEXX12,MYNAME12X5,MYNAME12X

PATINDEX和LIKE无法识别正则表达式上的*以指示可变位数。

你知道一种搜索零件尺寸可变的模式的方法吗?

谢谢。

sql-server sql-server-2014
2个回答
2
投票
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]%'
    )

1
投票

一点外卡(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]');
© www.soinside.com 2019 - 2024. All rights reserved.