TSQL de string ayrıştırma işlemleri ve sahte dizi kullanımı-2

26 Aralık 2008 – 09:26

Merhabalar, TSQL de string ayrıştırma işlemleri ve sahte dizi kullanımı yazı dizimize kaldığımız yerden devam ediyoruz. Bütün örnekler için aşağıdaki tanımı kullanacağız.

DECLARE @p VARCHAR(50)
SET @p = ‘ALFKI, LILAS, PERIC, HUNGC, SAVEA, SPLIR, LONEP, GROSR’

PATINDEX() ile doku eşleştirmesini kullanma:             Bir dokunun kelime içindeki ilk görüldüğü yerdeki pozisyonunu döndürür. Eğer yoksa sıfır döndürür.

PATINDEX ( ‘%pattern%’ , expression )

    SELECT CustomerID, ContactName, CompanyName
      FROM Northwind.dbo.Customers
     WHERE PATINDEX( ‘%,’ + CustomerID + ‘,%’, ‘,’ + @p + ‘,’ ) > 0   ; 
 

LIKE operatoru ile doku eşleştirmesini kullanma:

    SELECT CustomerID, ContactName, CompanyName
      FROM Northwind.dbo.Customers
     WHERE ‘,’ + @p + ‘,’ LIKE ‘%,’ + CustomerID + ‘,%’ ; 

String Ayrıştırma:

            Bazı koşullarda, parsed listesini sonraki işlerde kullanılabilen (örneğin bir IN clause ile birlikte)  bir resultset olarak kullanmak isteyebilirsin. Daha büyük liste örnekleri için IN() clause kullanmaktansa JOIN kullanmak daha etkili olabilir. Ayrıştırma işlemleri için kullanılan fonksiyonları ve yöntemleri incelemeye başlayacağız.     

PARSENAME() fonksiyonunu kullanma:Bir object isminin işaret edilen kısmını döndürür.PARSENAME ( ‘object_name’ , object_piece )

            Parsename() foksiyonu bir sysname değeri döndürür (nvarchar(128)’ e eşdeğer)  ve genel olarak database nesnelerin nesne adı, owner name, database name ve server name gibi database nesnesinin tanımlayıcı kısımlarını elde etmek için kullanılır. Bununla birlikte eğer string 5 ayrılmış değerden az yaratılmış ise bir string parse etmek içinde kullanılabilir. Bu konuyla ilgili tipik senaryolar full name ve bir IP adresinin tanım kısmını ayırmak gibi örnekler olacak. Aşağıda bir stringi ayrıştırmak için kullanılmıştır.

Örneğin:

DECLARE @ad NVARCHAR(500)

SET @ad = N’Kara, Dr.Murat, Can’

SELECT PARSENAME(ad, 3) AS “Unvan”,

PARSENAME(ad, 2) AS “Ad”,

PARSENAME(ad, 1) AS “Ikinci Ad”,

PARSENAME(ad, 4) AS “Soyad”    FROM ( SELECT REPLACE(@ad, ‘, ‘, ‘.’)) D(ad)

Bookmark and Share

Post a Comment

Subscribe without commenting