﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Performans İyileştirme &#8211; SQL Server Eğitimleri</title>
	<atom:link href="https://sqlserveregitimleri.com/etiket/performans-iyilestirme/feed" rel="self" type="application/rss+xml" />
	<link>https://sqlserveregitimleri.com</link>
	<description>SQL Server ile ilgili her şey</description>
	<lastBuildDate>Thu, 02 Jan 2025 08:21:55 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>SQL Server&#8217;da STRING_SPLIT Fonksiyonu</title>
		<link>https://sqlserveregitimleri.com/sql-serverda-string_split-fonksiyonu</link>
		
		<dc:creator><![CDATA[Yavuz Selim Kart]]></dc:creator>
		<pubDate>Thu, 02 Jan 2025 07:34:48 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Fonksiyonlar]]></category>
		<category><![CDATA[T-SQL Sorguları]]></category>
		<category><![CDATA[Metin Parçalama]]></category>
		<category><![CDATA[Performans İyileştirme]]></category>
		<category><![CDATA[SQL Server 2022 Yenilikleri]]></category>
		<category><![CDATA[SQL Server Fonksiyonları]]></category>
		<category><![CDATA[STRING SPLIT]]></category>
		<category><![CDATA[Veri Manipülasyonu]]></category>
		<guid isPermaLink="false">https://sqlserveregitimleri.com/?p=17151</guid>

					<description><![CDATA[1. Temel Kullanım 2. 2022&#8217;de Gelen Yenilikler 3. Dinamik Veriler ve Pratik Kullanımlar 4. Performansı Artırmak İçin İpuçları 5. En Sık Sorulan Sorular STRING_SPLIT fonksiyonu,...]]></description>
										<content:encoded><![CDATA[<table class="table table-bordered">
<tbody>
<tr>
<td style="text-align: left;">1. <a href="#temel-kullanım">Temel Kullanım</a></td>
</tr>
<tr>
<td style="text-align: left;">2. <a href="#2022-yenilikler">2022&#8217;de Gelen Yenilikler</a></td>
</tr>
<tr>
<td style="text-align: left;">3. <a href="#dinamik-veriler">Dinamik Veriler ve Pratik Kullanımlar</a></td>
</tr>
<tr>
<td style="text-align: left;">4. <a href="#performans-ipuclari">Performansı Artırmak İçin İpuçları</a></td>
</tr>
<tr>
<td style="text-align: left;">5. <a href="#sss">En Sık Sorulan Sorular</a></td>
</tr>
</tbody>
</table>
<p>STRING_SPLIT fonksiyonu, SQL Server 2016 (13.x) ve üzeri sürümlerde tanıtılmıştır. Bu fonksiyon, bir metin dizesini belirli bir ayırıcıya (delimiter) göre böler ve sonuçları tek bir sütunlu bir tablo olarak döndürür. Özellikle veri işleme ve analiz süreçlerinde, virgül, boşluk gibi ayraçlarla ayrılmış metinleri parçalamak için oldukça faydalıdır.</p>
<h2 id="temel-kullanım">1. Temel Kullanım:</h2>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT value 
FROM STRING_SPLIT('Ali,Veli,Ahmet', ',');</code></pre>
<p>Bu sorgu, giriş metnindeki elemanları tek tek döndürür. Ancak SQL Server 2016 ve 2019 sürümlerinde sıralama bilgisi (parçaların orijinal pozisyonu) sağlanmaz.</p>
<h2 id="2022-yenilikler">2. STRING_SPLIT&#8217;in 2022&#8217;de Gelen Yenilikleri</h2>
<p>SQL Server 2022 ile birlikte, STRING_SPLIT fonksiyonuna opsiyonel bir <strong>ordinal</strong> sütunu eklendi. Bu sütun, metin parçalarının orijinal sıralamasını koruyarak döndürür. Yeni parametre, özellikle sıralamanın önemli olduğu işlemler için büyük kolaylık sağlar.</p>
<h3>Yeni Kullanım Örneği:</h3>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT value, ordinal 
FROM STRING_SPLIT('Ali,Veli,Ahmet', ',', 1);</code></pre>
<table class="table table-bordered">
<thead>
<tr>
<th>value</th>
<th>ordinal</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ali</td>
<td>1</td>
</tr>
<tr>
<td>Veli</td>
<td>2</td>
</tr>
<tr>
<td>Ahmet</td>
<td>3</td>
</tr>
</tbody>
</table>
<h2 id="dinamik-veriler">3. STRING_SPLIT ile Dinamik Veriler ve Pratik Kullanımlar</h2>
<p>STRING_SPLIT’in yeni <strong>ordinal</strong> sütunu özelliği, aşağıdaki gibi dinamik veri işleme durumlarında oldukça kullanışlıdır:</p>
<h3>Metinlerin Sıralı Kullanımı</h3>
<p>Bir metni parçalamak ve orijinal sırasına göre işlem yapmak istediğinizde:</p>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT value 
FROM STRING_SPLIT('SQL,Server,2022,Yenilikleri', ',', 1)
ORDER BY ordinal;</code></pre>
<h3>ETL Süreçlerinde Verilerin Kaydedilmesi</h3>
<p>Parçalanan veriler sıralı olarak bir tabloya kaydedilebilir:</p>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CREATE TABLE #Temp (
    ID INT,
    Value NVARCHAR(50),
    Ordinal INT
);

INSERT INTO #Temp (ID, Value, Ordinal)
SELECT 1, value, ordinal 
FROM STRING_SPLIT('Ali,Veli,Ahmet', ',', 1);</code></pre>
<h3>Örnek Senaryo: Kullanıcı Girdisi ile Dinamik Veri İşleme</h3>
<p>Bir kullanıcıdan alınan virgülle ayrılmış bir dizi isimle işlem yapalım:</p>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>DECLARE @Names NVARCHAR(MAX) = 'Ali,Veli,Ahmet,Mehmet';
SELECT value, ordinal 
FROM STRING_SPLIT(@Names, ',', 1)
WHERE ordinal % 2 = 0; -- Sadece çift sıralı isimleri al</code></pre>
<p>Bu sorgu, yalnızca çift sıralı isimleri döndürür (Veli ve Mehmet).</p>
<h2 id="performans-ipuclari">4. Performansı Artırmak İçin İpuçları</h2>
<ol>
<li><strong>Sıralama Gereksinimi Olan Veriler İçin <strong>ordinal</strong> Kullanın:</strong> SQL Server 2022 öncesi sürümlerde sıralama eklemek için ek işlemler gerekiyordu. <strong>ordinal</strong> özelliği, bu ek yükü ortadan kaldırarak sorgu performansını artırır.</li>
<li><strong>Büyük Veri Kümelerinde STRING_SPLIT:</strong> STRING_SPLIT, büyük metin kümelerinde oldukça hızlı çalışır. Ancak işlem yoğunluğu olan durumlarda <strong>ordinal</strong> sütununu kullanmak, ek sıralama maliyetlerini düşürür.</li>
<li><strong>Alternatif Çözümlerle Karşılaştırın:</strong> STRING_SPLIT fonksiyonu yeterli olmadığında, XML tabanlı yaklaşımlar gibi diğer çözümleri değerlendirin. Ancak çoğu durumda 2022 sürümü, performans açısından daha avantajlıdır.</li>
</ol>
<h2 id="sss">5. STRING_SPLIT Hakkında Sık Sorulan Sorular</h2>
<h3>Eski SQL Server sürümlerinde sıralama nasıl eklenir?</h3>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>WITH CTE AS (
    SELECT value 
    FROM STRING_SPLIT('Ali,Veli,Ahmet', ',')
)
SELECT value, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ordinal
FROM CTE;</code></pre>
<h3>Ordinal sütunu kullanımı zorunlu mu?</h3>
<p>Hayır, <strong>ordinal </strong> sütunu opsiyoneldir. Eğer sıralama bilgisi gerekmiyorsa, eski sürümlerdeki gibi kullanabilirsiniz:</p>
<pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT value 
FROM STRING_SPLIT('Ali,Veli,Ahmet', ',');</code></pre>
<h3>Hangi durumlarda STRING_SPLIT yerine başka yöntemler tercih edilmeli?</h3>
<p>Eğer metin içinde birden fazla ayırıcı ile işlem yapmanız gerekiyorsa ya da çok karmaşık veri manipülasyonları yapacaksanız, STRING_SPLIT yerine XML veya JSON tabanlı yöntemler daha uygun olabilir.</p>
<h2>Sonuç</h2>
<p>SQL Server 2022 ile STRING_SPLIT fonksiyonuna eklenen <strong>ordinal</strong> sütunu, metin işleme işlemlerinde önemli bir geliştirme sunuyor. Bu yenilik, verilerin sıralama bilgisiyle birlikte işlenmesini kolaylaştırıyor ve daha hızlı sorgular yazılmasına olanak tanıyor.</p>
<p>Herkese çalışma hayatında ve yaşamında başarılar ve kolaylıklar dilerim!</p>
<div class='epvc-post-count'><span class='epvc-eye'></span>  <span class="epvc-count"> 13</span><span class='epvc-label'> Kez Okundu</span></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
