将具有相同ID的Select插入

时间:2020-06-02 00:21:48

标签: sql sql-server tsql sql-server-2012

在具有相同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和字符串作为参数传递来实现目标表的更好方法?

1 个答案:

答案 0 :(得分:2)

我想你想要

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

string_split()返回的列称为value