SQL SERVER中的ESCAPE SEQUENCE

use*_*807 1 sql sql-server

我必须在我的表上执行where by子句以在我的表中找到确切的字符串匹配,它在以下场景中工作正常

declare @issuerName varchar(max)
set @issuerName = 'WIDEOPENWEST FINANCE, LLC'

select * 
from company 
where ParentName = @issuerName
Run Code Online (Sandbox Code Playgroud)

但对以下查询失败

declare @issuerName varchar(max)
set @issuerName = 'TOYS 'R' US, INC'

select * 
from company 
where ParentName = @issuerName
Run Code Online (Sandbox Code Playgroud)

因为单引号.

有人能让我知道解决它的最佳方法是什么,因为单引号可以出现在字符串中的任何位置?我尝试在这个变量周围添加单引号,但它不起作用.

set @issuerName = ''TOYS 'R' US, INC''
Run Code Online (Sandbox Code Playgroud)

Yuc*_*uck 5

你这样做:

set @issuerName = 'TOYS ''R'' US, INC'
Run Code Online (Sandbox Code Playgroud)

将转义放入'字符串本身.

此外,如果您需要像使用LIKE子句一样更改转义字符,则可能需要检查ESCAPE关键字,以便更改用于当前查询的字符.请参阅SQL Server LIKE查询中的使用[]和ESCAPE子句.

  • 如果数据已经在变量中或来自另一列,则无需转义它们.如果你正在编写一个字符串文字,你只需要转义引号,如上例所示. (3认同)