如何以正确的方式撰写查询?

时间:2015-07-17 19:31:42

标签: sql tsql bcp

我有以下查询,我认为是错误的方式。 构建@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执行它。 我不确定如何以正确的方式撰写查询

3 个答案:

答案 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