73

我找到了使用 PATINDEX 查找下划线位置的解决方案:

DECLARE @a VARCHAR(10)  
SET     @a = '37_21'

PRINT PATINDEX('%_%', @a)                    -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)

你有其他想法吗?喜欢逃避下划线字符的方法吗?

4

3 回答 3

124

我总是用括号来做:'%[_]%'

于 2009-05-14T14:14:36.943 回答
26

要匹配两个下划线,每个下划线都必须用括号括起来

'%[__]%' -- matches single _ with anything after

'%[_][_]%' -- matches two consecutive _
于 2012-12-18T15:14:11.593 回答
6

[您可以使用和]字符转义,如下所示:

PRINT PATINDEX('%[_]%', '37_21')

于 2012-04-11T19:11:52.287 回答