sql >> データベース >  >> RDS >> Sqlserver

一時テーブルのシンボル データ フィールドを 5 列に分割する方法は?

    解決策は簡単です:

    <オール>
  1. 値を \s で分割します (スペース) 要素の順序を維持する
  2. 結果をピボット
  3. 特定の列から数字のみまたは文字のみを抽出
  4. 値を分割するには、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 を使用してデータを分割し、置換して結果を形成する方が簡単かつ安全です。




    1. データベース要約レポートを送信する自動電子メールシステム

    2. mysqlで集計関数(LAST)を使用できますか?

    3. SQL:サブクエリの列が多すぎます

    4. MYSQL ORvsINパフォーマンス