TSQL ile Belirli Karakterlerin Arasinda Kalan Metin Nasil Bulunur.

TSQL ile Belirli Karakterlerin Arasinda Kalan Metin Nasil Bulunur.

Tablomuzda ki veriler kirli oldugu zaman genelde metin alanlari temizlemek zorunda kaliriz. Bunlara örnek olarak belirli bir karakter içinde alan kismi almak olabilir. Is yerinde il bilgisinin parantez içinde yazilmis oldugu bir veri ile karsilastim. MEtin içinden il bilgisini alabilmek için basit bir sql script kullanmamiz gerekti. Belki baska ihtiyaci olanlarda olabilir diye bu basit scripti sizlerle paylasmak istedim.

Ilk olarak örnek olarak kullanacagimiz bir tablo olusturup içine verilerimizi atalim

.
create table Kisi
(
	ID int,
	Ad varchar(50),
	Soyad varchar(50),
	Adres varchar(100)
)
insert into Kisi Values
(1,'Sabri','KUNT','Eskisehir Yolu 9.km ÇANKAYA (ANKARA)'),
(2,'Esat','ÖZDAG','Mevlana müzesi anrkasi (KONYA)'),
(3,'Ali','RÜZGAR','Organize Sanayi Sitesi No 60 (BURSA)'),
(4,'Seher','KUNT','Gazi Ünv Teknokenti (ANKARA)'),
(5,'Ali','KALFA','Beykoz Merkez Mahallesi(ISTANBUL)')

Yukaridaki Tabloda parantez içinde kalan il ismini almak için ilk olarak parantez açma ‘(‘ ve parantez kapatma ‘)’ karakterlerinin indexlerini bulalim. Bunu için asagidaki scripti kullanabilirsiniz.

select *,CHARINDEX('(',Adres) as ParantezAcilis, CHARINDEX(')',Adres) as ParantezKapama
  from Kisi

Parantezleri nasil bulacagimiz anladigimiza göre simdi arasinda kalan metni alalim.


select *,
substring(Adres, CHARINDEX('(',Adres)+1 ,CHARINDEX(')',Adres)-CHARINDEX('(',Adres)-1)
  from Kisi

Gördügünüz gibi basit ve kullanisli bir yöntem. Bunun disinda karsilastiginiz sorunlari bizlerle paylasarak, diger ihtiyaci olan kisilere faydali olabilirsiniz.

.

Tags:

6 thoughts on “TSQL ile Belirli Karakterlerin Arasinda Kalan Metin Nasil Bulunur.

  • MErhaba

    ÖRneğini bir değişken üzerinde aşağıdaki gibi yazdım. Burada @name kısmına kolon ismini yazar, from da tablo adını yazarsan sadece (Tombik) kısmının geldiğini göreceksin.
    değişkenler kafanı karıştırmasın, sen sorguyu kendi tablona göre değiştir.
    declare @Name varchar(100)
    SET @Name = ‘Ahmet Fazıl (Tombik )’
    select substring(@Name, CHARINDEX(‘(‘,@Name), CHARINDEX(‘)’,@Name) -CHARINDEX(‘(‘,@Name)+1)
  •      //SqlCommand com = new SqlCommand(“select *,CHARINDEX(‘(‘,Name) as ParantezAcilis, CHARINDEX(‘)’,Name) as ParantezKapama from Tbl_1Table where ID=1125”, con); 
        con.Open();
        SqlDataReader dr = com.ExecuteReader(); 
        while (dr.Read())
        {
            lblName.Text=lblName.Text  + dr[“Name”] ; 
        }
        dr.Close();
        con.Close();
    Ahmet Fazıl (Tombik )
    Amacım “Name” kolomundaki metnin sadece (Tombik) kısmını almak
    Hocam yardım edebilir misiniz?
    Teşekkür ederim
  • declare @metin varchar(50) = ‘deneme.yildiz.deneme’

    print @metin

    select substring(@metin,charIndex(‘.’,@metin)+1, CHARINDEX(‘.’,@metin,charIndex(‘.’,@metin)+1)-charIndex(‘.’,@metin)-1)

     

  •   deneme.yildiz.deneme sql server ile burada noktalar arasindaki yildiz kelimesini nasil alabiliriz ?

  •  bu kisimda adres bilgisi içinde parantez açma karakterinin inde numarasini buluyoruz. buna i diyelim .

    sonra parantez kapatma karakterinin indexini buluyoruz. bunada j diyelim.

    i +1 den itibaren belirli bir karakter almamiz gerekiyor. bunuda j-i-1 diyerek buluyoruz. ve substringe bu degerleri verip parantez içinde kalan kismi aliyoruz.

    metnin içinde birden fazla parantez açma veya kapatma karakterleri varsa buna göre yapiyi degistirmek gerekir tabiki. bu en basit hali

  • substring(Adres, CHARINDEX('(',Adres)+1 ,CHARINDEX(')',Adres)-CHARINDEX('(',Adres)-1)
     
    açabilir misiniz ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir