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

ビューの文字列を列に分割するにはどうすればよいですか?

    すばやく簡単な方法は次のとおりです。

    DECLARE @T TABLE(full_location_id varchar(100));
    
    INSERT INTO @T 
    VALUES  ('A1-BF-35-B1'),
            ('AR-B3');
    
    WITH CTE AS
    (
        SELECT  full_location_id,
                LEN(full_location_id)-LEN(REPLACE(full_location_id,'-','')) N
        FROM @T
    )
    SELECT  full_location_id,
            PARSENAME(REPLACE(full_location_id,'-','.'),N+1),
            PARSENAME(REPLACE(full_location_id,'-','.'),N),
            PARSENAME(REPLACE(full_location_id,'-','.'),N-1),
            PARSENAME(REPLACE(full_location_id,'-','.'),N-2)
    FROM CTE
    

    結果:

    ╔══════════════════╦══════╦══════╦══════╦══════╗
    ║ full_location_id ║ Col1 ║ Col2 ║ Col3 ║ Col4 ║
    ╠══════════════════╬══════╬══════╬══════╬══════╣
    ║ A1-BF-35-B1      ║ A1   ║ BF   ║ 35   ║ B1   ║
    ║ AR-B3            ║ AR   ║ B3   ║ NULL ║ NULL ║
    ╚══════════════════╩══════╩══════╩══════╩══════╝
    

    そして、ここにsqlfiddleがあります デモ付き。



    1. 他の結合でlaravel5の緯度と経度で取得

    2. 複数の外部キーを使用してテーブルを作成し、混乱しないようにする方法

    3. PostgresqlでJSONB配列の値を合計する方法は?

    4. OracleのNCHAR列またはNVARCHAR列に国別文字を挿入しても機能しません