我有以下查询,我认为是错误的方式。
构建@query
变量时,我不确定如何包含单引号/双引号
DECLARE @query VARCHAR(2000)
DECLARE @bcpCommand VARCHAR(1024)
DECLARE @sharedDevFolder VARCHAR(500)
DECLARE @fileName VARCHAR(200)
DECLARE @environment VARCHAR(5)
DECLARE @customerCode VARCHAR(5)
DECLARE @parserConfig VARCHAR(5)
DECLARE @bucketAssign VARCHAR(10)
DECLARE @dateFormat VARCHAR(15)
DECLARE @RC INT
SET @sharedDevFolder = '\\REMOTESERVER\DataFeed\'
SET @fileName = 'Transaction-' +
@environment + '-' +
@customerCode + '-' +
@parserConfig + '-' +
@bucketAssign + '-' +
@dateFormat + '.txt'
SET @query =
'SELECT "Transaction Unique ID", "Transaction Date", "Person Unique ID"
UNION ALL
SELECT
NULL AS "Transaction Unique ID", CONVERT(VARCHAR(10),CONVERT(DATETIME,Date,1),101) AS "Transaction Date",
NULL AS "Person Unique ID"
FROM tblChromeRiverInitData WHERE YYYYMM = 201507'
SET @bcpCommand = 'bcp "' + @query + '" queryout "'
SET @bcpCommand = @bcpCommand + @sharedDevFolder + @fileName + '" -c -T -t^| -r\n'
EXEC @RC = master..xp_cmdshell @bcpCommand
我有一个输出:NULL
执行它。
我不确定如何以正确的方式撰写查询
答案 0 :(得分:1)
如果任何连接变量为NULL,则@query将为NULL。
对于scape引用,请使用两个单引号:
DECLARE @query VARCHAR(100)
SET @query = 'select ''string'''
PRINT @query
答案 1 :(得分:0)
我不确定我理解,但如果您有单引号作为数据的一部分,则必须通过单引号进行转义,例如:
select 'Today''s the day of the company''s big announcement'
答案 2 :(得分:0)
尝试用2个单引号替换双引号。
实施例
SET @query =
'SELECT ''Transaction Unique ID'', ''Transaction Date'', ''Person Unique ID''
UNION ALL