首页 > 解决方案 > 如果第一个字符下划线,SQL Like 运算符不起作用

问题描述

如果字符串有下划线是第一个字符,我没有得到确切的记录示例:

declare @name nvarchar(max)
set @name='_#@#_1'
SELECT Name from Emp where Name like  @name + '%'

预期输出:它应该根据表记录(_#@#_123)返回单行,但返回以下记录

_#@#_123
@#@#@123
@#@#_123
_#@#_123

标签: sqlsql-server

解决方案


由于下划线是一个特殊字符,因此您必须使用您选择的字符对其进行转义。让我们使用反斜杠\。您必须同时 1) 在数据中对其进行转义和 2) 添加ESCAPE子句:

declare @name nvarchar(max)
set @name='_#@#_1'
SELECT Name from Emp where Name like 
  replace(replace(@name, '\', '\\'), '_', '\_') + '%' ESCAPE '\'

推荐阅读