2016-07-19 75 views
0

在SQL Server中,如果我有一个'abc || DATE || Lorem ipsum || NUMBER || dolor sit amet,elit。|| CONTACT NAME ||:Nullam et odio laoreet'的示例字符串,我会提取我的'||'之间的所有字符串分隔符?我预期的结果集将是:SQL - 如何提取分隔符之间的字符串列表?

日期
NUMBER
联系人姓名

我也可以用一个单一的,以逗号分隔的结果的工作:日期,编号,联系人姓名。而且,我可能需要提取任意数量的这些子字符串。我上面的示例只有三个。感谢您的任何帮助,您可以提供!

+0

http://stackoverflow.com/questions/314824/t-sql-opposite-to-string-concatenation-how-to-split-string-into-multiple-reco –

+0

的可能的复制[怎么办我分裂一个字符串,所以我可以访问项目x?](http://stackoverflow.com/questions/2647/how-do-i-split-a-string-so-i-can-access-item-x) –

+0

这是选择子字符串的标准吗? –

回答

0

试试我创建的这个SQL Server函数。它是.net所以你必须启用CLR函数或在SQL Server中重新创建它。

<SqlFunction(DataAccess:=DataAccessKind.Read)> _ 
    Public Shared Function Split(Text As String, delimiter As String, returnZeroBasedIndex As Integer) As String 
     Dim s() As String = VB.Split(Text, delimiter) 
     If returnZeroBasedIndex <= s.Length - 1 Then 
      Return s(returnZeroBasedIndex) 
     Else 
      Return "" 
     End If 
    End Function 
+0

为什么这是低票?我每天都会使用它,它非常有用并且非常易于使用。 –

+0

我不知道为什么downvote。我将研究如何在我的场景中使用它。谢谢你的帮助。 – tremonti93

+0

我检查了评论中的链接,其中包含SQL Server实现。虽然CLR更快,但更容易理解。 –

相关问题