如何 "dynamically" 按特定字符拆分 varchar 列?

How can I "dynamically" split a varchar column by specific characters?

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

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

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

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

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

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 服务器完成的这个简单优化。