Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何分离字符串并插入到表中?_Sql_Sql Server - Fatal编程技术网

Sql 如何分离字符串并插入到表中?

Sql 如何分离字符串并插入到表中?,sql,sql-server,Sql,Sql Server,我的问题是,我有一个这样的字符串 Red,House|White,Car|Blue,Table - Col1 Col2 - ----------- - Red House - White Car - Blue Table 我想像这样在不同的行中插入这些元素 Red,House|White,Car|Blue,Table - Col1 Col2 - ----------- - Red House - White Car - Blue Tabl

我的问题是,我有一个这样的字符串

Red,House|White,Car|Blue,Table
-  Col1   Col2
-  -----------
-  Red    House
-  White  Car
-  Blue   Table
我想像这样在不同的行中插入这些元素

Red,House|White,Car|Blue,Table
-  Col1   Col2
-  -----------
-  Red    House
-  White  Car
-  Blue   Table

我怎么做?

您可以尝试此查询

DECLARE @str VARCHAR(500) = 'Red,House|White,Car|Blue,Table'
CREATE TABLE #Temp (tDay VARCHAR(100))
WHILE LEN(@str) > 0
BEGIN
    DECLARE @TDay VARCHAR(100)
    IF CHARINDEX('|',@str) > 0
        SET  @TDay = SUBSTRING(@str,0,CHARINDEX('|',@str))
    ELSE
        BEGIN
        SET  @TDay = @str
        SET @str = ''
        END
  INSERT INTO  #Temp VALUES (@TDay)
 SET @str = REPLACE(@str,@TDay + '|' , '')
 END

 SELECT * 
 FROM #temp

 SELECT tday,
    PARSENAME(REPLACE(tday,',','.'),2) 'Col1' ,
    PARSENAME(REPLACE(tday,',','.'),1) 'Col2'
FROM #temp

你可以查看现场演示。

也许这就是你想要的

SELECT Substring(value, 1,Charindex(',', value)-1)  as col1
,  Substring(value, Charindex(',', value)+1, LEN(value)) as  col2
FROM STRING_SPLIT('Red,House|White,Car|Blue,Table', '|')

自SQL Server 2016起生效

我使用
字符串分割()
或类似的字符串分割函数,您可以将其添加到数据库中。然而,我将最后的摘录逻辑表述为:

select left(s.value, v.split - 1),
       stuff(s.value, 1, v.split, '')
from string_split('Red,House|White,Car|Blue,Table', '|') s cross apply
     (values (charindex(',', s.value))) v(split);