sql >> Databasteknik >  >> RDS >> Sqlserver

Hur delar man upp en sträng i kolumner för en vy?

Här är ett snabbt och enkelt sätt:

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

Resultat:

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

Och här är en sqlfiddle med en demo.



  1. Stöds TransactionScope-objektet fullt ut med MySqlConnector för .NET?

  2. Uppdatera summan baserat på föregående saldorad

  3. OC4J 10.1.3.3 kan inte hitta ojms.rar inställning av databasbeständigheter

  4. Hur kan jag rensa minnet när jag kör ett långt PHP-skript? försökte avaktivera()