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.
Üç 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
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)
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.
Metni küçük harfe çevirir.
Kelimenin veya kelimelerin baş harfini büyük harfe çevirir.
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;
Metnin içindeki bir meyni başka bir metinle değiştirir.
İki metni birleştirir
--- 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;
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: Adında es gecen hastaların, tc numaralarının son hanesi 1 olanları isme göre alfabetik tersten sıralayın
Metnin başındaki boşluğu ya da belirtilen metni siler.
RTRİM
Metnin sonundaki boşluğu ya da belirtilen metni siler.
--- SELECT RTRIM('Esra Salman','Salman') AS Rtrim from dual;
Metnin başındaki ve sonundaki boşluğu ya da belirtilen metni siler.
Metnin TERS çevirir.
--- select hastane_adi, reverse(hastane_adi) as tershastane from tbl_hastane
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%'
--- 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İ
Hiç yorum yok:
Yorum Gönder