如何通过特定字符“动态”拆分varchar列?

时间:2016-08-31 22:04:38

标签: sql sql-server ssms

我有一个存储2个值的列。示例如下:

|                     Column 1                            |
|some title1 =ExtractThis ; Source Title12 = ExtractThis2|

我想将'ExtractThis'删除到一列中,将'ExtractThis2'删除到另一列中。我已经尝试使用子字符串,但它不起作用,因为第1列中的数据是可变的,因此它并不总是划出我想要的值。下面的SQL:

SELECT substring(d.Column1,13,24) FROM dbo.Table d

这会返回'Extract This',但对于其他列,它需要太多或太少。是否有一个函数或函数组合可以让我在角色上一致地分割?这与我的长度计数不同,在我的专栏中是一致的。

1 个答案:

答案 0 :(得分:0)

select substring(col1,CHARINDEX('=',col1)+1,CHARINDEX (';',col1)-CHARINDEX ('=',col1)-1) Val1,
        substring(col1,CHARINDEX('=',col1,CHARINDEX (';',col1))+1,LEN(col1)) Val2
from #data

重复计算可以从每行减少5到3。 但我想相信SQL SERVER完成的这个简单优化。

相关问题