我有一個長字符串的列。數據需要分割成列,並且有不同長度的字符串,並不總是相同數量的列。不完全確定如何做到這一點,所以在這裏尋找一些建議。從字符串拆分數據到列
可以說我有這個字符串:
VS5〜MedCond1〜35.4 | VS4〜MedCond2〜16 | VS1〜MedCond3〜155 | VS2〜MedCond4〜70 |血氧飽和度〜MedCond5〜100 | VS3〜MedCond6〜64 |的FiO2〜MedCond7〜21 | MAP〜MedCond8〜98 |
而在某些情況下,字符串可能並不具備所有的醫療條件,只是其中的一些。
我需要拆分成多列,其中列名在tilds之間,即MedCond1和值將是價值的tild的權利,但在管前,最終是這樣的:
MedCond1 MedCond2 MedCond3 MedCond4 MedCond5 MedCond6 MedCond7 MedCond8
======== ======== ======== ======== ======== ======== ======== ========
35.1 24 110 64 100 88 21 79
我需要爲大表內的很多行執行此操作,正如我所說的,並非所有列都始終存在,但它們不會是不同的名稱,您可能需要med cond 1-8,然後在另一組中有med cond 3,4,7.
這是我創建的一個查詢,它是我想要的但不是動態的,因此它正在拾取值的一些額外的位串
select MainCol, case when charindex('MedCond1', MainCol) > 0 then
substring(MainCol, charindex('MedCond1', MainCol) + 9, 4) end as [MedCond1]
from MedTable
將返回
MedCond1
========
35.3
40.2
33.6
33|V <--- Problem
正如你所看到的數值有時拿起以字符串的附加部分,由於CHARINDEX數的硬編碼。該值有時有4個字符長,有一個小數位,有時2個長而沒有小數位。我想使這個動態。管道定義了我需要的數據的結束,並且開始由列名稱末尾的tild定義。
感謝進行此動態
安德魯
過寬。請指定您計劃使用哪個工具來拆分這些字符串 –
希望能夠使用SQL Server 2012 – Andrew
任何人都可以提出任何建議,因爲我正在嘗試完成這個任務的截止日期?我將添加一個我已經完成的sql語句,但它並不是動態的,因此會獲取字符串的其他位。 – Andrew