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.