Kategoriler
ORACLE

Oracle Database 11g – SQL Temelleri I ||Single-row SQL functions

Önceki dersleri görmek için: https://selimkaratas.com.tr/oracle-11g-r2-egitimi-ders-notlari

3. Single-row SQL functions ( Tek satır SQL Fonksiyonları )

  • Verileri işlemek
  • Koşulları sağlamak ve değer döndürmek
  • Satır başına tek bir sonuç döndürür
  • Veri türünü değiştirmek
  • İç içe kullanılabilir

Ve çeşit olarak 5 adettir:

  • Character
  • Number
  • Date
  • Conversion ( Dönüştürme)
  • General

şeklinde 5 adettir.

Karakter Fonksiyonları

 

      Fonksiyon                                                               Çıktı

LOWER('ORACLE DBA')        oracle dba         
 -- Bütün karakterleri küçük harf yapar.
UPPER('Oracle Dba')            ORACLE DBA       
--Bütün karakterleri büyük karakter yapar.
INITCAP('oracle dba')         Oracle Dba          
-- Kelimelerin ilk harflerini büyük yapar.

Bu basit özelliğin kimi zaman ne kadar faydalı olduğuna daha yakından bakalım şimdi.

SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'king';
boş döner

şeklinde bir arama yaptığımızda bize boş sonuç döndürecektir. Bunun nedeni veritabanımız da yer alan isimlerin büyük küçük harf duyarlı olması. Bu şekilde belirli standartta arama yaparak veritabanımızı kandırıp bize sonuçları listelemesini sağlayabiliyoruz.

SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'king';

--burada yaptığımız şey veritabannında bulunan büyük küçük harf
--farklılığını lower koyarak küçükmüş gibi gösterip  
--çağırıyoruz

şeklinde aramamıza rağmen bize sonuçları listelemiş oldu.

lower

 INITCAP ile alakalı bir örneğe yakından bakalım.

SELECT employee_id, UPPER(last_name), department_id
FROM employees
WHERE INITCAP(last_name) = 'Hunold';

/* upper(last_name) olarak tamamladığımız için çıktıda büyük harflerle yazılır.
 arama yaparken INITCAP(last_name) yaptığımız için ilk harf büyük olarak arar.
 burada dikkat etmemiz gereken nokta fonksiyona göre arama yapmalıyız. */

initcap

Character-Manipulation Functions

SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),
INSTR(last_name, 'e') "Contains 'e'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'PROG';

/* concat ile first_name ve last_name kolonlarını birleştirdik.

length ile last_name kararkter uzunluklarını buluyoruz.

instr ile last name'de yer alan 'e' karakterinin kaçıncı sırada olduğunu buluyoruz.

substr ile job_id'lerin sondan 4 karakterleri arasında 'PROG' yazanları seçiyoruz. */

Character-Manipulation Functions

 

LPAD / RPAD

SELECT salary, rpad(salary,6,'*') FROM employees;

// toplamda 6 karakter yazdırır eğer eksik ise o boşluğa * koyar

rpad

 

SELECT salary, LPAD(salary,10,'*') FROM employees;

/* toplamda 10 karakter olacak şekilde ayarlar ve başlangıcına * koyar. telefon numaraları, kredi kartı numaraları gibi yerlerde kullanılabilir. */

lpad

REPLACE

select replace
('ŞAMPİYON FENER,  ŞAMPİYON2 FENER' ,'ŞAMPİYON2', 'EN BÜYÜK') 
FROM DUAL;
REPLACE

TRIM

SELECT LENGTH(TRIM(' ' FROM ' TECH ')) 
FROM DUAL;
--Boşlukları sil dedik ve uzunluğunu hesapladık.
CropperCapture[99]
SELECT TRIM(BOTH '2' FROM '22TECH222') FROM DUAL;
-- kelimenin başı ve sonundaki 2'leri siler.
CropperCapture[100]
SELECT TRIM(LEADING '1' FROM '11111TECH114321') 
FROM DUAL;
--kelimenin başındaki 1'leri sildik.
CropperCapture[101]
SELECT TRIM(TRAILING '1' FROM '111111TECH11111') FROM
DUAL;
--kelimenin sonundaki 1'leri sildik.

CropperCapture[102]

Number Functions

ROUND Fonksiyonu

SELECT ROUND(45.923,2), 
ROUND(45.923,0),
ROUND(45.923,-1)
FROM DUAL;

/* ROUND yakın olduğu yere doğru yuvarlar. 
1. örnekte 45,923 sayısının ondalık kısmındaki 2. karaktere bakarak yuvarlıyoruz. 
2. örnekte 45,9 olduğundan 46'ya yuvarlanır.
3. örnekte 45 olduğundan 5 sayısına göre bakarak 4 sayısını 5'e yuvarlarız. */

round

 

DUAL sonuçları görüntülemek için kullanabileceğiniz bir boş tablo  oluşturarak
işlevleri ve hesaplamaları gösterir.

TRUNC Fonksiyonu

SELECT TRUNC(45.923,2), TRUNC(45.923),
TRUNC(45.923,-1)
FROM DUAL;

/*yukarıdaki yorumlardan yola çıkarak. Virgülden sonraki rakamlara dikkat ederek yorumlama yapabiliriz. Burada tek mantık istisnasız aşağı değere yuvarlama yaparız. */

TRUNC

 

MOD Fonksiyonu

SELECT last_name, salary, MOD(salary, 7000)
FROM employees
WHERE job_id = 'IT_PROG';

-- Matematiksel MOD işlemidir.

MOD

 

Tarih’lerle Alakalı İşlemler

RR DATE Format

 

RR Formatı yakın tarihe göre yorumlar. YY Formatı ise yüzyıl göz önünde bulundurur.  Örneğin 1995 tarihinde iken 27-OCT-17 şeklinde bir tarih tanımlanırsa RR Formatına göre bu 2017 olarak yorumlanır. Ancak YY Formatına göre 20. yy göz önünde bulundurularak 1917 olarak yorumlanır.

SYSDATE Fonksiyonu

SELECT sysdate
 FROM dual;

sysdate

 

Tarihler’de Aritmetik İşlemler

SELECT last_name, (SYSDATE-hire_date)/(7*3) AS WEEKS
FROM employees
WHERE department_id = 60;

/* şuanki zamandan hire_date'i çıkarıp 21 değerine böldük. çıktıya weeks yadırdık. bütün bunları department_id=60 için yapıyoruz */

tarihlerle aritmetik işlemler

 

Date-Manipulation Functions

Date-Manipulation Functions

 

SELECT 
ROUND(months_between(SYSDATE,'01-OCA-13')) 
FROM DUAL;

/* günümüz tarihi ile 2013 Ocak arasında kaç ay olduğunu bulduk. round kullanımına dikkat  edilmeli. Ayrıca tarih formatına dikkat ederek sorgulama yapılmalı.*/
mounth between
SELECT ADD_MONTHS(SYSDATE,6) FROM DUAL; 
--6 ay sonrası 
CropperCapture[103]
SELECT NEXT_DAY(SYSDATE,'CUMARTESİ') FROM DUAL; 
--bir sonraki cumartesi günü
CropperCapture[104]
SELECT LAST_DAY(SYSDATE) FROM DUAL; 
--ayın son günü
CropperCapture[105]
SELECT ROUND(SYSDATE,'MONTH') FROM DUAL; 
--şubatın 5i olduğı için ayın başına yuvarlar.
CropperCapture[106]
SELECT ROUND(SYSDATE,'YEAR') FROM DUAL; 
--ayın 16sından önce olduğu için ayın başına yuvarlar.
CropperCapture[107]
SELECT TRUNC(SYSDATE,'MONTH') FROM DUAL; 
--16sından büyük olsa bile aşağı değere yuvarlar.
CropperCapture[108]
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL; 
--yılın başına yuvarlar.
CropperCapture[109]

Bir cevap yazın

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