Belirli Bir Karakterin Son Tekrarından Sonrasını Kesme | MsSql

Merhaba, elimde şöyle bir liste vardı:

ParcaNo UyumluArac
Parca-001 Mazda 626 Dizel 1.6 100HP
Parca-001 Toyota Corolla Benzin 1.6 110HP
Parca-002 Ford Escort Benzin 1.6 90HP
Parca-002 VW Jetta Dizel 1.6 105HP
Parca-002 BMW 520 Benzin 2.0 160HP

Ben bunları parça bazında tek satırda göstermek için şunu yapıyorum:

CREATE TABLE #TempArac ([ParcaNo] VARCHAR(22), AracList varchar(400));
	WITH cteArac
	AS
	(SELECT 
			ParcaNo
		   ,UyumluArac AS AracList
		FROM [MalzemeAracListe])

INSERT INTO #TempArac
    SELECT
        o.ArtNr
       ,SUBSTRING(STUFF((SELECT DISTINCT
                ', {' + c1.AracList + '}'
            FROM cteArac c1
            WHERE c1.ArtNr = o.ArtNr
            FOR XML PATH (''))
        , 1, 1, ''), 1, 4000) AS AracList
    FROM cteArac o
    GROUP BY o.ArtNr;

İlk 4000 karakteri kestiğim için bazı kayıtlarda veri ortadan bir yerden kesiliyor.

{Ford Escort Benzin 1.6 90HP}, {VW Jetta Dizel 1.6 105HP}, {BMW 520 Benzin 2.0

yazmasın da;
{Ford Escort Benzin 1.6 90HP}, {VW Jetta Dizel 1.6 105HP}
yazsın istiyorum.

Ben de o son kalan kirli kısmı temizlemek için aşağıdaki yöntemi buldum:

UPDATE #TempArac
SET AracList = REVERSE(SUBSTRING(REVERSE(AracList), CHARINDEX(',}', REVERSE(AracList)) + 1, LEN(AracList) - CHARINDEX(',}', REVERSE(AracList))))
FROM #TempArac
WHERE AracList NOT LIKE '%}'

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *