我需要满足字符串中具有"ns[0-9]:"的条件,其中[0-9]可以是任何甚至大于10的数字。
例:
DECLARE @test TABLE ( value VARCHAR(20))
INSERT INTO @test VALUES
( 'ns1:'),
( 'NOT OK'),
( 'ns7:'),
( 'ns8:'),
( 'ns9:'),
( 'ns10:'),
( 'ns11:' )
SELECT *, PATINDEX( '%ns[0-9]:%', value ) passes
FROM @test
这仅适用于 1 到 9,不适用于 10 及以上。 我可以使用 [0-9][0-9],但它仅适用于 10 及以上。我也不想在数字和冒号之间使用通配符。
我只希望以下格式返回带有 patindex 的 1
ns1:、ns2:、ns10:、ns11:等。
我还需要一个非功能解决方案。 出于性能原因,我想使用类似字符串的功能
谢谢
您可以使用:
select (case when value like 'ns[0-9]%:' and
value not like 'ns[0-9]%[^0-9]%:'
then 1 else 0
end) as passes_flag