如何转义下划线字符?

我正在写类似于下面的where子句,并希望能够在结尾找到_d的实际条目。

Where Username Like '%_d'

当前回答

加上Gerardo Lima的回答,我在尝试使用反斜杠作为escape子句的转义字符时遇到了问题。这导致了以下问题:

SELECT * FROM table WHERE email LIKE '%@%\_%' ESCAPE '\'

这个问题用感叹号解决了。这工作:

SELECT * FROM table WHERE email LIKE '%@%!_%' ESCAPE '!'

其他回答

加上Gerardo Lima的回答,我在尝试使用反斜杠作为escape子句的转义字符时遇到了问题。这导致了以下问题:

SELECT * FROM table WHERE email LIKE '%@%\_%' ESCAPE '\'

这个问题用感叹号解决了。这工作:

SELECT * FROM table WHERE email LIKE '%@%!_%' ESCAPE '!'

这招对我很管用,用转盘就行 “% \ _ %”

我有一个类似的问题,使用类似的模式'%_%'没有工作-正如问题所示:-)

使用“%\_%”也不起作用,因为第一个\被解释为“在like之前”。

使用'%\\_%'可以。\\(双反斜杠)首先转换为单\(反斜杠),然后在类似的模式中使用。

在SSIS v18.0中,这些都不适合我,所以我会这样做: WHERE CHARINDEX('_', thingyoursearching) < 1..我试图忽略有下划线的字符串。如果你想找到有下划线的东西,只要把它翻转过来: WHERE CHARINDEX('_', thingyoursearching) > 0

T-SQL参考LIKE:

您可以使用通配符模式匹配字符作为文字字符。若要使用通配符作为文字字符,请将通配符括在括号内。下表显示了使用LIKE关键字和[]通配符的几个示例。

对于你的情况:

... LIKE '%[_]d'