在select语句中转义单引号 - IN子句

时间:2014-05-14 19:34:47

标签: sql sql-server tsql

你想要像这样获得字符串'Username,Surname,Name'     '用户名', '姓', '姓名'

我试试这个

   DECLARE @Header varchar(MAX)
SELECT @Header= 'Username,Surname,Name'  

SELECT @Header =  replace(@Header,',',''',''')
SELECT @Header = ''+@Header+''

SELECT * from myTable where field in ($header)

结果应该是“用户名”,“姓氏”,“姓名”

但我不知道为什么它什么都没显示 抱歉我的英语不好。

2 个答案:

答案 0 :(得分:0)

以下内容应该有效:

DECLARE @Header varchar(MAX)
DECLARE @sqlstmt varchar(MAX)
SET @Header= 'Username,Surname,Name'  

SET @Header =  replace(@Header,',',''',''')
SET @Header = ''''+@Header+''''

SET @sqlstmt = 'SELECT * from myTable where field in ('+@header+')'
exec (@sqlstmt)

答案 1 :(得分:0)

我怀疑这可能是XY problem

你有什么理由不能使用以下内容吗?

SELECT *
FROM myTable
WHERE field IN ( '''Username''', '''Surname''', '''Name''' );

这将返回myTablefield的值为以下值之一的所有行的所有列:

  • 'Username'
  • 'Surname'
  • 'Name'

请注意,要转义字符串文字中的单引号,只需使用''即可。因此,包含单个引号的文字将为''''