如何在 T-SQL 中从分隔字符串中隔离特定数据
在 SQL 世界中,使用字符串有时会带来挑战,特别是当尝试从包含多个数据点的较长字符串中提取特定信息时。让我们探讨一个场景,其中您有一个表,其中有一列包含一个字符串,该字符串包含多个由分隔符分隔的键值对。
问题定义
给定一个表具有以下结构:
Col1 = '123' Col2 = 'AAAAA' Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'
您的目标是仅提取“客户端名称”值,在本例中为是“B B BOB”,来自“Col3”列。分隔键值对的分隔符是“|”管道字符,键值对本身由等号('=')分隔,前导和尾随空格。
解决方案
解决此问题T-SQL 中的问题,您可以采用以下字符串操作技术:
代码片段
对于您的具体数据,您可以使用以下代码片段来实现期望的结果:
Select col1, col2, LTRIM(RTRIM(SUBSTRING( STUFF(col3, CHARINDEX('|', col3, PATINDEX('%|Client Name =%', col3) + 14), 1000, ''), PATINDEX('%|Client Name =%', col3) + 14, 1000))) col3 from Table01
注意:使用 CHARINDEX 与 PATINDEX 来定位键的起始位置时,您可能会遇到细微的性能差异。然而,这两种方法通常会产生类似的结果,因为它们的效率相当。
以上是如何从 T-SQL 中的分隔字符串中提取特定数据?的详细内容。更多信息请关注PHP中文网其他相关文章!