sql - 如果第一个字符下划线,SQL Like 运算符不起作用
问题描述
如果字符串有下划线是第一个字符,我没有得到确切的记录示例:
declare @name nvarchar(max)
set @name='_#@#_1'
SELECT Name from Emp where Name like @name + '%'
预期输出:它应该根据表记录(_#@#_123)返回单行,但返回以下记录
_#@#_123
@#@#@123
@#@#_123
_#@#_123
解决方案
由于下划线是一个特殊字符,因此您必须使用您选择的字符对其进行转义。让我们使用反斜杠\
。您必须同时 1) 在数据中对其进行转义和 2) 添加ESCAPE
子句:
declare @name nvarchar(max)
set @name='_#@#_1'
SELECT Name from Emp where Name like
replace(replace(@name, '\', '\\'), '_', '\_') + '%' ESCAPE '\'
推荐阅读
- sharepoint - Sharepoint 授权令牌在 REST api 中的使用
- angular - 如何将来自firestore(angularfire)的文档字段值保存在变量中
- visual-studio-code - Visual Studio Code 推送到 Compute Engine
- python - 在每个表单域中添加附加信息
- javascript - React - 嵌套条件渲染问题
- javascript - 将基于类的模型更改为功能模型 React
- angular - 导入 angular-intro.js 给出错误 angular-intro.js is not a module
- stm32 - 为什么 UART w/DMA 只接收发送数据的最后一个字节?
- c++ - 是否可以将 AddressSanitizer 和 ThreadSanitizer 组合成一个版本?
- java - 更新 .java 文件时是否应该更新 src/main/resources 中的 .class 文件?