sql >> データベース >  >> Database Tools >> SSMS

T-SQLで単一のフィールド値を複数の固定長列値に分割する

    あなたは.netです 開発者.netを書くのは簡単だと思います T-SQLで使用できる関数 コード。 SQL CLRを作成するには 関数はこの回答 をチェックします (リンクの1つを使用してSQL CLRを実装しました 正規表現関数。

    値を4つの長さのチャンクで分割し、最大6つを表示する必要があるとします。

    DECLARE @DataSouce TABLE
    (
        [RecordID] TINYINT IDENTITY(1,1) PRIMARY KEY
       ,[RecordData] NVARCHAR(MAX)
    );
    
    INSERT INTO @DataSouce ([RecordData])
    VALUES ('test some test goes here')
          ,('some numbers go here - 1111122222233333344444444445');
    
    
    SELECT DS.[RecordID]
          ,RM.[MatchID]
          ,RM.[CaptureValue]
    FROM @DataSouce DS
    CROSS APPLY [dbo].[fn_Utils_RegexMatches] ([RecordData], '.{1,4}') RM;
    

    これで、データが分割されます。 pivotしましょう それとチャンクの6つだけを表示します:

    SELECT *
    FROM
    (
        SELECT DS.[RecordID]
              ,RM.[MatchID]
              ,RM.[CaptureValue]
        FROM @DataSouce DS
        CROSS APPLY [dbo].[fn_Utils_RegexMatches] ([RecordData], '.{1,4}') RM
    ) DS
    PIVOT
    (
        MAX([CaptureValue]) FOR [MatchID] IN ([0], [1], [2], [3], [4], [5], [6])
    ) PVT;
    

    ここではregexを使用します データとPIVOTを分割する関数 列を作成し、一部のチャンクを除外します。これで、データをテーブルに挿入して実体化し、エクスポートすることができます。上記のリンクを使用してこのような関数を実装するか、必要なことを実行する独自の関数を作成できます。



    1. インストール中のphpmyadminエラー「ポート」に空の値が指定されました。

    2. mysqlデータベースからExcelにテーブルをエクスポートする方法は?

    3. PhpMyAdmin 3.5.6は、IIS6を使用するWindowsServer2003でHTTPエラー403を生成します

    4. SSMSのSQLServer2008でユーザー定義のテーブルタイプを確認できる場所はどこですか?どうすれば新しい列を挿入できますか?