首页 > 解决方案 > 插入具有相同 ID 的 Select

问题描述

在具有相同 ID 的列中插入拆分分隔字符串。

假设我有如下演示设置:

USE DEMODATABASE 
GO 

CREATE TABLE EMPLOYEEID_Address 
  ( 
     ID            INT , 
     Address VARCHAR(MAX) 
  )

我声明了一些变量

DECLARE @id INT
DECLARE @Addresses VARCHAR(MAX) 
DECLARE @SEPARATOR CHAR(1)
SET @id = 1 
SET @SEPARATOR='|'
SET @Addresses='159 North Manchester Rd.
Edison, NJ 08817|209 West Fulton Lane
Braintree, MA 02184|...' 

注意:@addresses刺痛是动态的,不是固定的

现在我的目标是使用该函数EMPLOYEEID_Address将具有相同 ID 的多个地址插入表中。STRING_SPLIT

/*TARGET TABLE*/
Id  Address
1   159 North Manchester Rd. Edison, NJ 08817
1   209 West Fulton LaneBraintree, MA 02184
1   ...

所以我尝试了:

INSERT INTO EMPLOYEEID_Address 
            (ID,Address)
Select @id as ID, 
SELECT * 
FROM   STRING_SPLIT(@EMPLOYEENAME, @SEPARATOR)

但这没有用,而

INSERT INTO EMPLOYEEID_Address 
            (Address)
SELECT * 
FROM   STRING_SPLIT(@EMPLOYEENAME, @SEPARATOR)

结果为:

Id   Address
NULL 159 North Manchester Rd. Edison, NJ 08817
NULL 209 West Fulton LaneBraintree, MA 02184

有什么方法可以实现这一点,或者有什么更好的方法来实现我的目标表,其中 id 和 string 作为参数传递?

标签: sqlsql-servertsqlsql-server-2012

解决方案


我想你想要:

INSERT INTO EMPLOYEEID_Address (ID, Address)
    Select @id as ID, s.value
    from STRING_SPLIT(@EMPLOYEENAME, @SEPARATOR) s;

返回的列string_split()称为value


推荐阅读