【问题标题】:Insert Select into with same ID插入具有相同 ID 的 Select
【发布时间】:2020-09-20 09:18:19
【问题描述】:

在具有相同 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 是动态的,不是固定的

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

/*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 作为参数传递?

【问题讨论】:

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


    【解决方案1】:

    我想你想要:

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

    string_split() 返回的列称为value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2023-01-02
      • 2014-07-22
      • 1970-01-01
      相关资源
      最近更新 更多