繁体   English   中英

T-SQL通配符搜索 - 命名空间值

[英]T-SQL Wildcard search - namespace values

我需要满足条件中具有“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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM