解決策は簡単です:
<オール>\s
で分割します (スペース) 要素の順序を維持する
値を分割するには、XML
を使用できます これ
のように .数字のみを抽出するには、一連の REPLACE
を実行できます すべてのユニットを削除します。数字を削除してテキストを残すには、REPLACE
を使用できます。
私の環境では、多くの SQL CLR 関数を使用しており、ソリューションは次のようになります:
SELECT PVT.id
,PVT.symbolData
,dbo.fn_Utils_RegexReplace ([0], '[^\d+]', '') AS [valuebefore]
,dbo.fn_Utils_RegexReplace ([0], '\d+', '') AS [unitbefore]
,[1] AS [symbole]
,dbo.fn_Utils_RegexReplace ([2], '[^\d+\.]', '') AS [valueafter]
,dbo.fn_Utils_RegexReplace ([2], '[\d+\.]', '') AS [unitafter]
FROM #TEMP
CROSS APPLY dbo.fn_Utils_RegexSplitWithOrder (SymbolData, '\s') RS
PIVOT
(
MAX([value]) FOR [index] IN ([0], [1], [2])
) PVT
ORDER BY PVT.id;
こちら を確認できます あなたの環境でもそのような機能を得るために答えてください。
あなたの場合、XML を使用してデータを分割し、置換して結果を形成する方が簡単かつ安全です。