2014-05-14 53 views
-2

ü我想要得到的字符串“用户名,姓,名”这样的 “用户名”,“姓”,“名”逃逸单引号的select语句 - IN子句

我试试这个

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

SELECT @Header = replace(@Header,',',''',''') 
SELECT @Header = ''[email protected]+'' 

SELECT * from myTable where field in ($header) 

结果应该是这样的“用户名”,“姓”,“名”

,但我不知道为什么什么都不显示 对不起我的英文不好。

+0

@ M.Ali 我试着从myTable的这个SELECT *凡在( '用户名', '姓', '名称')做工精细 场,但这个我尝试在('用户名该SELECT * FROM myTable的地方场,姓氏,名字')没有!!!!! 我在SQL SERVER 2005 – user3638173

+0

对不起我的错误我把它与SSRS查询设计器混合起来:S –

+0

没问题:) tnx任何方式 – user3638173

回答

0

下面应该工作:

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

SET @Header = replace(@Header,',',''',''') 
SET @Header = ''''[email protected]+'''' 

SET @sqlstmt = 'SELECT * from myTable where field in ('[email protected]+')' 
exec (@sqlstmt) 
0

我怀疑这可能是一个XY problem

你有什么理由不能仅仅使用下面的东西?

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

这将返回任何行中的所有列在myTable其中field值之一:

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

需要注意的是,逃避单引号在字符串文字中,只需使用''即可。所以包含单个单引号的文字将是''''