表类型中的字符串字符串

时间:2017-05-25 01:50:01

标签: sql sql-server

我想从表类型列表中进行子串。

代码低于

 @Description AS dbo.ListStringTableType

@Description有类似下面的数据列表

Test+Again
Today+Tomorrow

通过char'+'

查找子字符串
Col1        Col2
-----       -----
Test        Again
Today       Tomorrow 

3 个答案:

答案 0 :(得分:4)

SQL Server 2016具有split()功能。但是,您可以改为:

select v.col1, v.col2
from t outer apply
     (values (left(col, charindex('+', col) - 1),
              stuff(col, 1, charindex('+', col), '')
             )
     ) v(col1, col2);

答案 1 :(得分:3)

您可以使用charindex获取子字符串,如下所示。

declare @var varchar(20)='Test+Again'

select substring(@var,1,CHARINDEX('+',@var)-1) as col1
,substring(@var,CHARINDEX('+',@var)+1,len(@var)) as col2

@var变量应该是你的情况下的列。

答案 2 :(得分:0)

Select left(description,charindex('+', description)-1) as col1, 
right(description,len(description)-charindex('+', description)) as col2

CharIndex将帮助找到我们提供的字符串的第一个位置。对于col1,我们需要在字符串' +'之前使用字符串,因此我们使用' left'功能在这里。 '左'将从开头到提到的长度获取字母数(通过charindex函数提取,将返回给定输入中精确字符串的位置)。 同样,对于col2,我们需要字符串后面的字符串' +'所以我们正在使用' right'功能在这里。 '右'将获取从最后一个字母到提到的长度的字母数(字符串的总长度 - 通过charindex函数提取的长度)。 有关,右,左功能的更多信息,请使用以下链接。

https://social.technet.microsoft.com/wiki/contents/articles/17948.t-sql-right-left-substring-and-charindex-functions.aspx