将数据插入表中,其值在另一个select语句的引号内

时间:2016-12-06 02:00:57

标签: sql sql-server

我正在尝试将数据插入到具有特定值的表的多个列中。但是,一个varchar列的数据值将来自放在引号内的另一个表select语句。

我需要将它放在里面而不将sub select语句解释为字符串的一部分。以下是我的询问;

INSERT INTO Table1
            (column1,
             column2,
             column3,
             column4)
VALUES     (484640,
            4,
            1,
            '<HTML><Head></Head><Body><a href="cgroup-histstatus.aspx?Staging_PKID=(select distinct column_1 from Table_2)">Upload results</a></Body></HTML>')

1 个答案:

答案 0 :(得分:6)

目前,您的select查询将被视为字符串,因为它包含在单引号中。查询将插入到列中,而不是结果。

这是正确的方法:

INSERT INTO Table1
            (column1,
             column2,
             column3,
             column4)
SELECT DISTINCT 484640,
                4,
                1,
                '<HTML><Head></Head><Body><a href="cgroup-histstatus.aspx?Staging_PKID='
                + cast(column_1 as varchar(50))
                + '">Upload results</a></Body></HTML>'
FROM   Table_2

如果您希望column_1中的值包含在单引号中,请将'+ column_1 +'替换为'''+ column_1 +'''

即使select查询返回多条记录,这也有效。