gpt4 book ai didi

sql - 将具有多个分隔符的字符串拆分为 3 部分

转载 作者:行者123 更新时间:2023-12-04 23:43:40 25 4
gpt4 key购买 nike

我从 xml 文件中读取了一个字符串。我需要把它分成3部分。我需要在插入查询的选择语句中运行此查询。更新我想在插入语句的选择查询中使用它。

插入到 table1 (col1,col2,company,station,location,coln) 选择(这里我想要每个列的这个查询。)

字符串示例:

@declare exValue1 nvarchar(100) = 'Tempo > XNX (Marc) > Stores/Parts';
@declare exValue2 nvarchar(100) = 'Sedan 12 > XNX (Peter Inc) > Stores/Inventory';
@declare @company varchar(25);
@declare @station varchar(25);
@declare @location varchar(50);

分隔符是 4 个字符,始终相同。

例如第一个字符串,我需要拆分和分配

 Tempo to company, XNX (Marc) to station, Stores/Parts to location.

例如第二个字符串

Sedan 12 to company, XNX (Peter Inc) to station, Stores/Inventory to location.

我尝试了 substringcharindex 但我只能得到第一个和第二个字符串,但我无法准确地得到位置字符串。任何帮助感谢 TIA。

select @company = SUBSTRING(@exValue1, 1, CHARINDEX('>', @test) - 1)

select @station = SUBSTRING (@exValue1, CHARINDEX('>', @test) + 4, LEN(@test))

我无法正确确定位置和车站。

最佳答案

这将按顺序为您提供字符串的三个部分

    declare @exValue1 nvarchar(100) = 'Tempo > XNX (Marc) > Stores/Parts';

SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) AS slices
FROM (SELECT CAST('<XMLRoot><RowData>' + REPLACE(@exValue1,'&gt;','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) AS x)t
CROSS APPLY x.nodes('/XMLRoot/RowData')m(n)

但是,如果您想处理变量,就可以了..

declare @exValue1 nvarchar(100) = 'Tempo &gt; XNX (Marc) &gt; Stores/Parts';

select SUBSTRING(@exValue1, 1, CHARINDEX('&gt;', @exValue1) - 1)
set @exValue1 = SUBSTRING(@exValue1,CHARINDEX('&gt;', @exValue1)+4,len(@exValue1))
select SUBSTRING(@exValue1, 1, CHARINDEX('&gt;', @exValue1) - 1)
set @exValue1 = SUBSTRING(@exValue1,CHARINDEX('&gt;', @exValue1)+4,len(@exValue1))
select @exValue1

关于sql - 将具有多个分隔符的字符串拆分为 3 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41142301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com