我的问题是我有一个像这样的字符串
Red,House|White,Car|Blue,Table
并且我想将此元素插入不同的行中
- Col1 Col2
- -----------
- Red House
- White Car
- Blue Table
我该怎么办?
答案 0 :(得分:1)
也许这就是您要寻找的东西。
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开始工作
答案 1 :(得分:0)
您可以尝试此查询。
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
您可以查看实时演示Here。
答案 2 :(得分:0)
我使用string_split()
或类似的字符串拆分器功能,可以将其添加到数据库中。但是,我将最终的提取逻辑表达为:
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);