我想要这个数据字段:
MaritalStatus=M;Youngest=[-0.999,0.999];
拆分为:
field name = Maritalstatus , data is M
Field name = Youngest , Data is [-0.999,0.999];
如何编写SQL?
答案 0 :(得分:0)
对于SUBSTRING
和CHARINDEX
来说,这有点乐趣,但只有2条信息可以提取:
select SUBSTRING(@string,
CHARINDEX('=', @string) + 1,
CHARINDEX(';', @string) - CHARINDEX('=', @string) - 1) as Maritalstatus,
SUBSTRING(@string,
CHARINDEX('=', @string, CHARINDEX(';', @string)) + 1,
LEN(@string) - CHARINDEX('=', @string, CHARINDEX(';', @string))) as Youngest
答案 1 :(得分:0)
您可以在SP中使用以下代码或创建用户定义的函数来实现目标
declare @commaSeperatedVal varchar(100)
set @commaSeperatedVal='MaritalStatus=M;Youngest=[-0.999,0.999];'
DECLARE @x XML
SELECT @x = CAST('<A>'+ REPLACE(@commaSeperatedVal,';','</A><A>')+ '</A>' AS XML)
select 'field name ='+ replace(Tval,'=' , ',data is ') from
(
SELECT t.value('.', 'varchar(100)') as Tval
FROM @x.nodes('A') AS x(t)
) tbl
where tbl.Tval<>''