将数据插入表中,并将值插入另一个select语句的引号内
问题描述:
我试图将数据插入具有特定值的表的多个列中。但是,一个varchar列的数据值将来自放置在引号内的另一个表select语句。将数据插入表中,并将值插入另一个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>')
答
目前您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
查询返回多条记录时,也能正常工作。
嗯,甜甜的SQL注入攻击。 –
当插入到varchar中时,table_2的column_1上的数据是bigint。我遇到错误转换数据类型。我错过了什么? – Dren
@Dren - 那么你需要明确地转换为'varchar',然后连接字符串 –