如何在字符类(MS SQL SERVER PATINDEX 函数)中指定 ] 符号?
'%["[]%' - for starting bracket - it works
'%["]]%' - for ending - it does not
如何在字符类(MS SQL SERVER PATINDEX 函数)中指定 ] 符号?
'%["[]%' - for starting bracket - it works
'%["]]%' - for ending - it does not
看起来没有办法在 PATINDEX 中正确转义右括号 (])。] 单独可以逐字书写,但不能包含在字符集中。
但是,根据这个 DBA.SE question,有一些解决方法(完整示例请参阅链接文章):
PATINDEX('%[[-^{}:,]%' COLLATE Latin1_General_BIN2, MyJSONString)
PATINDEX('%[[' + CHAR(174) + '@]%', REPLACE(@test,']',CHAR(174)))
(NULLIF(PATINDEX('%[[{}:,]%', d.ResponseJSON), 0), NULLIF(PATINDEX('%]%', d.ResponseJSON), 0)))
在测试了不同的选项后,这似乎按预期工作。试试看。
PATINDEX('%[^]]%', 'test[test]') +1
添加“+1”是因为在我执行的每次测试中,它总是在结束括号“]”之前停止一个字符,这确保捕获打开和关闭位置。
试试看,让我知道你的想法。