<?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>Ahmet HAYRAN &#187; Oracle DB</title>
	<atom:link href="http://www.ahmethayran.com/tag/oracle-db/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ahmethayran.com</link>
	<description>&#34;Keep It Simple, Smartypants&#34;</description>
	<lastBuildDate>Sun, 18 Dec 2011 09:21:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oracle DB: Case Insensetive Arama</title>
		<link>http://www.ahmethayran.com/2010/04/oracle-db-case-insensetive-arama/</link>
		<comments>http://www.ahmethayran.com/2010/04/oracle-db-case-insensetive-arama/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 12:19:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Case Insensitivity]]></category>
		<category><![CDATA[Oracle 10gR2]]></category>
		<category><![CDATA[Oracle DB]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.ahmethayran.com/?p=117</guid>
		<description><![CDATA[Uygulama geliştiricilerin veya veri tabanı adminlerinin genellikle problem yaşadığı konulardan bir taneside Oracle Case Insensetive Search (Büyük Küçük Harfe Duyurlu Arama) problemidir. Bunu konu üzerine bir çok yazı ile karşılaşmış ve bu konu ile ilgili bir çok çözüm yolunu uygulamaya çalışmış olabilirsiniz. Oracle 10gR2 öncesinde case insensetive arama için bir çok çözüm yolu mevcut olmasına rağmen bu yollardan sadece bir tanesinin uygulanması nihai çözüm olmamaktaydı.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ahmethayran.com/wp-content/uploads/2010/04/oracle_logo.jpg"><img class="alignleft size-medium wp-image-120" title="Oracle Logo" src="http://www.ahmethayran.com/wp-content/uploads/2010/04/oracle_logo-300x225.jpg" alt="Oracle 10gR2" width="238" height="166" /></a>Uygulama geliştiricilerin veya veri tabanı yöneticilerinin genellikle problem yaşadığı konulardan bir tanesi de Oracle Case Insensetive Search (Büyük Küçük Harfe Duyurlu Arama). Bunu konu üzerine bir çok yazı ile karşılaşmış ve bu konu ile ilgili bir çok çözüm yolunu uygulamaya çalışmış olabilirsiniz. Oracle 10gR2 öncesinde case insensetive arama için bir çok çözüm yolu mevcut olmasına rağmen bu yollardan sadece bir tanesinin uygulanması nihai çözüm olmamaktadır.</p>
<p>Örneğin &#8220;Querying Data with Case Insensevity&#8221; bu konulara bir örnek olabilir. Genellikle bu yol uygulama geliştiriciler için çok maliyetli olmaktadır. Maliyet ile kastetmek istediğim çok fazla emek ve zaman kaybıdır. Çünkü yazılmış betikler içindeki sorguların yapısını değiştirmek gerekmektedir. Kısacası bu durumda tek seçeneğiniz UPPER, NLS_UPPER ve REGEXP_LIKE gibi optisiyonları kullanmak olacaktır. Fakat 10gR2 sürümünden sonra gelen bir özellik ile bu duruma daha iyi bir çözüm bulunmuştur.</p>
<p><span id="more-117"></span></p>
<p>Aşağıda 10gR2 öncesinin ve sonrasının tipik çözümlerini örnek üzerinde gösterdim.</p>
<p>10gR2 öncesi yaratılmış bir tablodaki kişilerin isimlerini çektim.</p>
<p class="errorbox">SQL&gt; select name from names;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Ahmet Hayran<br />
ahmet hayran<br />
AHMET HAYRAN</p>
<p>NLS_SORT=BINARY olarak düzenledikten sonra yapmış olduğum sorgu case sensetive olarak çalıştı.</p>
<p class="errorbox">SQL&gt; alter session set NLS_SORT=BINARY;<br />
Session altered.<br />
SQL&gt; select name from names where name = &#8216;Ahmet Hayran&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Ahmet Hayran</p>
<p>NLS_SORT parametresinin değerinini bu sefer sonuna _CI (Case Insensetive) getirerek değiştirdim. Eşitliklerde görüldüğü üzere problem yok.</p>
<p class="errorbox">SQL&gt; alter session set NLS_COMP=ANSI;<br />
Session altered.<br />
SQL&gt; alter session set NLS_SORT=BINARY_CI;<br />
Session altered.<br />
SQL&gt; select name from names where name = &#8216;Ahmet Hayran&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Ahmet Hayran<br />
ahmet hayran<br />
AHMET HAYRAN</p>
<p>NLS_SORT parametresini tekrar eski haline alıp BINARY yaptım. LIKE parametresi case sensetive çalıştı.</p>
<p class="errorbox">SQL&gt; alter session set NLS_SORT=BINARY;<br />
Session altered.<br />
SQL&gt; select name from names where name like &#8216;Ahmet%&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Ahmet Hayran</p>
<p>NLS_SORT parametresini eşitlikte çalışmış olduğu şekli ile tekrar düzenletim fakat like sorgularında durum yine aynı. Soruguda görüldüğü üzere like case sensetive çalıştı.</p>
<p class="errorbox">SQL&gt; alter session set NLS_COMP=ANSI;<br />
Session altered.<br />
SQL&gt; alter session set NLS_SORT=BINARY_CI;<br />
Session altered.<br />
SQL&gt; select name from names where name like &#8216;Ahmet%&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Ahmet Hayran</p>
<p>10gR2 sürümü ve sonraki sürümlerinde NLS_COMP parametresine getirilen &#8216;LINGUISTIC&#8217; değeri ile tüm eştitlik, sıralama işlemlerinin yanında benzerlik(LIKE) sorgularıda case insensetive çalışacaktır.</p>
<p class="errorbox">SQL&gt; alter session set NLS_SORT=BINARY_CI;<br />
Session altered.<br />
SQL&gt; alter session set NLS_COMP=LINGUISTIC;<br />
Session altered.<br />
SQL&gt; select name from names where name = &#8216;Ahmet Hayran&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Ahmet Hayran<br />
ahmet hayran<br />
AHMET HAYRAN<br />
SQL&gt; select name from names where name like &#8216;Ahmet%&#8217;;<br />
NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Ahmet Hayran<br />
ahmet hayran<br />
AHMET HAYRAN</p>
<p>REFERANSLAR</p>
<p>Koopman, J. (2005). Retrieved From <a href="http://www.orafaq.com/node/91">http://www.orafaq.com/node/91</a> at 2009</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ahmethayran.com/2010/04/oracle-db-case-insensetive-arama/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

