通过使用T-Sql分割长字符串来获取第2和第3个字符串 [英] get 2nd and 3rd string by splitting a long string using T-Sql

查看:48
本文介绍了通过使用T-Sql分割长字符串来获取第2和第3个字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的一个字段包含一个值USA ;; Japan ;; India

我试图将它拆分为;;

这样我就可以得到结果



美国

日本

印度



我可以使用以下查询获得第一个字符串(ie.USA)。

Hi,
One of my field contain a value "USA;;Japan;;India"
I was trying to split it by ";;"
so that I should get the result

USA
Japan
India

I can obtain the first string(ie.USA) by using the following query.

select SUBSTRING(Field1, 0, PATINDEX('%;;%',Field1)) as location from Table1.





如何获得另外两个字符串。

提前致谢。



How can I get the other two string.
Thanks in advance.

推荐答案

查看此链接



http://blogs.msdn.com/b/amitjet/archive/2009/12 /11/sql-server-comma-separated-string-to-table.aspx [ ^ ]



链接使用','作为分隔符。对于您的情况,您可以将','更改为';'
check this link

http://blogs.msdn.com/b/amitjet/archive/2009/12/11/sql-server-comma-separated-string-to-table.aspx[^]

The link uses ',' as a separater. For your case you can change ',' to ';'


declare @fld varchar(50);
declare @str1 varchar(50);
declare @x int;
declare @str2 varchar(50);
declare @str3 varchar(50);
declare @tempstr varchar(50);
Select @fld = Field1 from table1;
Set @x=PATINDEX('%;;%',@fld);
Set @str1=SUBSTRING(Field1,0,@x);
Set @tempstr=substring(@fld,@x+2,999);
Set @x=PATINDEX('%;;%',@tempstr);
Set @str2=SUBSTRING(@tempstr,0,@x);
Set @str3=substring(@tempstr,@x+2,999);
select @str1 as location, @str2 as cntry1, @str3 as cntry2


试试这个简单的解决方案

try this simple solution
DECLARE @S varchar(max),
  @Split char(1),
  @X xml
SELECT @S = 'USA;Japan;India',
@Split = ';'
SELECT @X = CONVERT(xml,'<root><s>' + REPLACE(@S,@Split,'</s><s>') + '</s></root>')
SELECT [Value] = T.c.value('.','varchar(20)')
FROM @X.nodes('/root/s') T(c)


这篇关于通过使用T-Sql分割长字符串来获取第2和第3个字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆