首页 > 解决方案 > 选择管道分隔值

问题描述

我有一个场景可以从分隔字符串中选择单个值。

例子:

declare @Test varchar(100) = 'ABC|DEF|GHI'

由于数据库是 SQL Server 2008 版本,我不能使用拆分功能。

寻找分别拆分和选择每个值的最佳方法。

标签: sqlsql-serversplit

解决方案


您可以使用 CharIndex() 来查找分隔符,然后使用 SubString() 在它们之间抓取:

Declare @Test varchar(100) = 'ABC|DEF|GHI'

Declare @d1 Int = CharIndex('|',@Test,1)
Declare @d2 Int = CharIndex('|',@Test,@d1+1)


Select 
Substring(@Test,1,@d1-1) As f1,
Substring(@Test,@d1+1,@d2-@d1-1) As f2,
Substring(@Test,@d2+1,len(@Test)-@d2) As f3

结果:

f1  f2  f3
ABC DEF GHI

推荐阅读