ben

OMÜ , Bilgisayar Mühendisliği, 13'

21 Ağustos 2019 Çarşamba

Metinsel Fonksiyonlar

GENEL TEKRAR SORGULARI

DİKKAT: Ders aralarında gelen bu genel tekrar sorgularını lütfen kendiniz yapmaya çalışın ve her sorgu için kendinize en fazla 5 dk süre tanıyın, dersin sonunda cevapları vardır.


1) Kan grubu pozitif olan 15 ile 30 yas arasında olan bayan hastaları boylarına göre gruplandığında , aynı boya sahip olanların kilo ortalamısını,boya göre tersten sıralayarak getiren  sql sorgusu
2) İlac olarak farklı kaç adet ilaç vardır. 
3) kac tane Çocuk  devlet hastanesi var?


Metinsel Fonksiyonlar 

LPAD


Üç parametre alır. İlk parametre sonuna ekleme yapılacak string ifadedir. İkinci parametre kaç karaktere tamamlanacağı ve son parametre ise hangi karakterle doldurulacağıdır. İşlem string ifadenin sağı için yapılır.

--- SELECT LPAD('Oracle',10,'esra') FROM DUAL;


RPAD


Üç parametre alır. İlk parametre başına ekleme yapılacak string ifadedir. İkinci parametre kaç karaktere tamamlanacağı ve son parametre ise hangi karakterle doldurulacağıdır. İşlem string ifadenin solu için yapılır.

--- SELECT RPAD('Oracle',10,'esra') FROM DUAL;


LENGTH


Metnin kaç karakterden oluştuğunu belirtir.

---select length(hasta_adi) as ismin_harf_sayisi, hasta_adi   from tbl_hasta order by ismin_harf_sayisi desc

---select hastane_adi from tbl_hastane 
where length(hastane_adi)= (select max(length(hastane_adi)) from tbl_hastane)



UPPER


Metni  BÜYÜK harfe çevirir.

---select hasta_adi, upper(hasta_adi) as buyuk_isim from tbl_hasta



LOWER


Metni  küçük harfe çevirir.

 --- select hasta_adi, lower(hasta_adi) as kücük_isim from tbl_hasta


 INITCAP


Kelimenin veya kelimelerin baş harfini büyük harfe çevirir.

--- SELECT INITCAP('esra salman') as initcap FROM DUAL; 


 SUBSTR


Metnin belli bir bölümünü almamızı sağlar. İlk parametre string ifadeyi belirtir. İkinci parametre kaçıncı karakterden itibaren alınacağını, son parametre ise kaç karakter alınacağını belirtir. Eğer son parametre verilmezse sonuna kadar işlem yapılır.


---select hasta_adi, substr(hasta_adi,1,4) as isim_parcala from tbl_hasta


İlk 2 hane al: SELECT substr('Orcale Dersi',1,2)  as  sqlleft FROM DUAL;

Son 2 hane al:  SELECT substr('Orcale Dersi',-2,2)  as  sqlright FROM DUAL;


REPLACE


Metnin içindeki bir meyni başka bir metinle değiştirir.

---select hasta_adi, replace(hasta_adi,‘ ', ‘ ') as isim_parcala from tbl_hasta where hasta_adi='Fatma Özlem



CONCAT


İki metni birleştirir



 --- SELECT CONCAT ('oracle', ' Veritabanı') AS ismek from dual;
--- SELECT 'oracle'|| ' Veritabanı' AS ismek from dual;



LTRİM


Metnin başındaki boşluğu ya da belirtilen metni siler.


 --- SELECT LTRIM('   Esra Salman') AS ltrim from dual;

 --- SELECT LTRIM('Esra Salman', 'Esra') AS ltrim from dual;

RTRİM


Metnin sonundaki boşluğu ya da belirtilen metni siler.


 --- SELECT RTRIM('Esra Salman   ') AS Rtrim from dual;

--- SELECT RTRIM('Esra Salman','Salman') AS Rtrim from dual;


TRİM


Metnin başındaki ve sonundaki boşluğu ya da belirtilen metni siler.

 REVERSE


Metnin TERS çevirir.

--- select hastane_adi, reverse(hastane_adi) as tershastane from tbl_hastane


 CHR




--- SELECT CHR(7)|| CHR(65)||CHR(84) from dual;  sonuc: HAT

 INSTR


Metin içinde aranan ifade varsa indexini,  yoksa 0 değer döner.

--- SELECT INSTR('Bu ders Oracle sql/plsql dersi','plsql')  as ara FROM DUAL;

SORU:Hastanelerin telefon numaralarının basında 0 olmayanların basına 0 ekleyen sql komutunu yazın

--- select * from tbl_hasta  where telefon  not like '0%'
--- select * from tbl_hasta  where substr(telefon,1,1)!='0'
--- update tbl_hasta set telefon='0'||telefon  where substr(telefon,1,1)!='0'


SORU:İçerisinde Kadın ifadesi gecen hastanelerin hastane isimlerindeki boşlukları kaldıran sql komutu

--- update tbl_hastane set hastane_adi=replace(hastane_adi,' ','')
where hastane_adi like '%Kadın%'

SORU: Adında es gecen hastaların, tc numaralarının son hanesi 1  olanları isme göre alfabetik tersten sıralayın

--- select * from tbl_hasta where hasta_adi like '%es%' and substr(hasta_tc,-1,1)='1'
order by hasta_adi desc


SORU: diploma sicil numaralarının son iki hanesini köşeli paranteze alan  , karakter uzunlugunun karekökünu hesaplayıp tamsayıya yuvarlayıp toplamını hesaplayan sorguyu yazınız

--- select sum( round( sqrt( length( '[' ||substr(diploma_sicil,-2,2)||']')),0))
from tbl_doktor


SORU: ‘oracle veritabanı öğreniyorum’ metnini aşağıdaki şekilde şifreleyin
- oracle yerine excel yazın
- Metni ters cevirin  
- a ları *ile değiştirin
- boşlukları + değiştirsin 
- Tum ifadeyi buyuk harfe cevirin 

- -- select upper(replace( replace( reverse( replace('oracle veritabanı öğreniyorum','oracle','excel')), 'a','*'),' ','+')) from dual


SORU: MUROYINERĞÖ+IN*B*TIREV+LECXE    Yandaki metni alınan cıktı üzerinden  aynı algoritma ile  doğru metni  getirin

--- select replace( reverse( replace( replace(lower( 'MUROYINERĞÖ+IN*B*TIREV+LECXE'),'+',' '),'*','a')),'excel','oracle') from  dual;


SORU: hastanın adının ilk harfi, soyadının ilk harfi ve tc sinin son iki rakamını birleştirerek ters çevirip yeni bir hasta kodu üreten sorguyu yazınız

--- select reverse(substr(hasta_adi,1,1)||substr(hasta_soyadi,1,1)|| substr(hasta_tc,-2,2)) from tbl_hasta 

SORU: Randevu alan hastalar için randevu kodu üretilecektir. randevu kodu:hasta telefonunun 8. karakterden itibaren 3 rakam +hastanin adının ilk uc harfi+ soyadının tersten ilk 3 harfinin birleşimidir. Üretilen koddaki harfler büyük olmalıdır

--- select upper( substr(telefon,8,3)||substr(hasta_adi,1,3)|| substr( reverse(hasta_soyadi),1,3)) from tbl_hasta

SORU: En uzun hastane ismi kac karakterdir ve hangisidir.
--- select  * from tbl_hastane
where length(hastane_adi)=(select max(length(hastane_adi)) from tbl_hastane)
and rownum<=5



GENEL TEKRAR  ÇÖZÜMLERİ



1)  select boy,round( avg(kilo),2) from tbl_hastaprofil where kangrubu like '%+%' and yasi between 15 and 30 and cinsiyet='K' group by boy order by boy desc


2) select count( distinct ilac_adi) from tbl_ilac


2) select count(*) from tbl_hastane
where hastane_adi like '%Çocuk%' and tur='devlet' 

Hiç yorum yok: