SQL İle String Değeri Parçalama

Veri tabanı kolonlarında birden fazla bilgiyi karakter ile ayırarak tutmak tavsiye edilmese de bazı durumlarda bir hücrede birden fazla değer tutulma efektif olabilmektedir.

Örneğin; 2|4|32|34|535|435 değerlerini SQL ile işlemek için “|” karakterinden parçalayıp işlemek gerekebilir. Bunun için gerekli olan SQL kodlarını içeren fonksiyon aşağıdaki gibidir.

</p>
<p>CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(512))<br />
RETURNS table<br />
AS<br />
RETURN (<br />
WITH Pieces(pn, start, stop) AS (<br />
SELECT 1, 1, CHARINDEX(@sep, @s)<br />
UNION ALL<br />
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)<br />
FROM Pieces<br />
WHERE stop &amp;gt; 0<br />
)<br />
SELECT pn,<br />
SUBSTRING(@s, start, CASE WHEN stop &amp;gt; 0 THEN stop-start ELSE 512 END) AS s<br />
FROM Pieces<br />
)</p>
<p>

SQL Server üzerinde fonksiyon bu kod ile oluşturulduktan sonra kullanımı ve örnek ekran çıktısı ise şöyledir.

Örnek veri olarak yukarıdaki veriyi kullanacağız:

</p>
<p>SELECT * FROM dbo.Split('|','2|4|32|34|535|435')</p>
<p>

 

Yorum Yapın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d blogcu bunu beğendi: