SELECT - müqayisə, məntiqi və xüsusi operatorlar

Əvvəlki addımda biz cədvəldən məlumatın çəkilməsi üçün WHERE təklifində bərabərliklik = işarəsindən istifadə etdik. Transact-SQl yazılardan çətin şərtli məlumatların çıxarilmasını təmin edir və bunun ümün yanaşma operatorları, məntiqi operatorlar və xüsusi operatorlar istifadə olunur. Yanaşma operatorları aşağıdakılardır:

  • = Bərabər
  • > Böyük
  • < Kiçik
  • >= Böyük bərabər
  • <= Kiçik bərabər
  • <> Fərqli (bərabər deyil)

Onlar simvol və tarix tipli dəyişənlər üçün eyni qiymət alırlar. Simvol tipli dəyişənlət onların kodlarındakı terminlərlə müqayisə olunurlar.

Tutaq ki bizə reytinqi 200-dən çox olan sifarişçiləri görmək lazımdır:

SELECT *
FROM Customers
WHERE rating > 200

Nəticə belədir:

CNUM  CNAME                             CITY       RATING  SNUM
----- --------------------------------- ---------- ------- -----
2004  Концерн "Дети лейтенанта Шмидта"  Бобруйск   300     1002
2008  ОАО "Валют-транзит"               Караганда  300     1007

Məntiqi operatorlar:

  • AND məntiqi "və"
  • OR məntiqi "va ya"
  • NOT məntiqi yox (əks fikir)

AND operatoru iki məntiqi qiyməti müqaisə edir və əgər hər iki qiymət doğrudursa TRUE (doğru), digər hallarda isə FALSE (yanlış) qiymətini qaytarır. OR operatoru hər hansı bir qiymət TRUE olarsa TRUE qaytarır. NOT operatoru isə əgər qiymət FALSE-dirsə TRUE və əksinə qiymət qaytarır. Məntiqi operatorların istifadə olunması SELECT əmrinin imkanlarını artırır. Məs: 'Караганда'-dan olan və reytinqi 200-dən artıq olan sifarişçilərə baxmaq üçün sadəcə olaraq belə əmr lazımdır:

SELECT *
FROM Customers
WHERE city = 'Караганда' AND
      rating > 200

Bizim VB-də bu şərti ödəyən yalnız bir sifarişçimiz var.

CNUM  CNAME                             CITY       RATING  SNUM
----- --------------------------------- ---------- ------- -----
2008  ОАО "Валют-транзит"               Караганда  300     1007

Əgər OR-dan istifadə etsək, onda 'Караганда'-da olan və ya reytinqi 200-dən şox olanların siyahısını alacağıq:

SELECT *
FROM Customers
WHERE city = 'Караганда' OR
      rating > 200

Sualın nəticəsi:

CNUM  CNAME                             CITY       RATING  SNUM
----- --------------------------------- ---------- ------- -----
2004  Концерн "Дети лейтенанта Шмидта"  Бобруйск   300     1002
2008  ОАО "Валют-транзит"               Караганда  300     1007

NOT qiyməti dəyişmək üçün istifadə olunur. Sual:

SELECT *
FROM Customers
WHERE city = "Караганда" OR
	NOT rating > 200

Nəticə:

CNUM  CNAME                CITY      RATING  SNUM   
----- -------------------- --------- ------- ------ 
2001  ТОО Рога и копыта    Москва    100     1001
2002  AО Бендер и К        Одесса    200     1003
2003  Фирма ХХХ            Рязань    200     1002
2006  Clemens              Лондон    100     1001
2007  ОАО "ООО"            ТОМСК     100     1004
2008  ОАО "Валют-транзит"  Караганда 300     1007

İfadəni qruplaşdırmaq üçün Transact-SQL-də mötərizədən () istifadə olunur. Məs:

SELECT *
FROM Customers
WHERE NOT (city = 'Караганда' OR
      rating > 200)

Bu sual 'Караганда'-da olmayan və reytinqi 200-dən çox olmayanları seçəcək.
Nəticə:

CNUM  CNAME              CITY    RATING  SNUM
----- ------------------ ------- ------- -----
2001  ТОО Рога и копыта  Москва  100     1001
2002  AО Бендер и К      Одесса  200     1003
2003  Фирма ХХХ          Рязань  200     1002
2006  Clemens            Лондон  100     1001
2007  ОАО "ООО"          ТОМСК   100     1004

İndi xüsusi operatorlara baxaq: IN, BETWEEN,LIKE, IS NULL.

IN operatoru qiymətin verilmiş sətir qiymətinə daxil olduğunu təyin edir. Məs: əgər siz Москва və Хабаровск-da yerləşən bütün satıcıları tapmaq üçün belə bir sorğu verməlisiniz:

SELECT * 
FROM Salespeople
WHERE city = 'Москва' OR
   city = 'Хабаровск'

Lakin daha sadə üsul var:

SELECT *
FROM Salespeople
WHERE city IN ( 'Москва', 'Хабаровск' )

Bu sualın nəticəsi:

SNUM  SNAME   CITY       COMM
----- ------- ---------- -----
1001  Иванов  Москва     12.0
1002  Петров  Хабаровск  13.0

IN operatoru üçün qiymətlər yumru mötərizə daxilində yazılır və qiymətlər vergül ilə ayrılırlar:

BETWEEN operatoru IN operatoruna oxşayır. Siyahıdan fərqli olaraq BETWEEN operatoru qiymətlər diapazonunu təyin edir. Sorğuda siz əvvəlcə BETWEEN sözünü yazmalı sonra başlanğıc qiymət, açar spzü olan AND və son qiymət. Birinci qiymət ikincidən kiçik olmalıdır. Növbıti sual komissiyonnuları 10 və 12 arasında olan agentləri seçəcək:

SELECT *
FROM Salespeople
WHERE comm BETWEEN 10 AND 12
SNUM  SNAME    CITY       COMM  
----- -------- ---------- ----- 
1001  Иванов   Москва     12.0
1003  Егоров   Караганда  10.0
1004  Сидоров  Сочи       11.0

LIKE operatoru yalnız simvol tipli sıtirlərə tətbiq olunur və o alt sətirləri axtarır. Yəni ki o həmin sətirin müəyyən hissəsini uyğunlaşdığını axtarır. Şərti olaraq o xüsusi simvolları istifadə edir:

  • Altı xətli simvol _ - İxtiyari bir hərifli simvolu əvəz edir. Məs: 'к_т' 'кот' və 'кит'-ə uyğun gələcək, amma 'крот' olmayacaq.
  • Faiz % simvolu - İxtiyari simvollar ardıcıllığını əvəz edir. Məs: '%м%р' 'компьютер' və 'омар' sözlərinə uyğun gələcək:

Gəlin adları 'О' hərfi ilə başlayan sifarişçiləri seçək:

SELECT *
FROM Customers
WHERE cname LIKE 'О%'
CNUM  CNAME                CITY       RATING  SNUM
----- -------------------- ---------- ------- -----
2008  ОАО "Валют-транзит"  Караганда  300     1007
2007  ОАО "ООО"            ТОМСК      100     1004

LIKE-ın istifadəsi sizin qiyməti tam bilməyəndə axtarışı üçün lazımdır. Siz yalnız bildiyiniz hissəni istifadə edə bilərsiniz.

NULL qiymətin olmamasını bildirdiyi kimi siz NULL ilə ixtiyari nəticəsinin necə olduğunu bilməyəcəksiniz. Adətən sizə NULL olan sətirləri ayırmaq lazım gələcək. Bunun üçün xüsusi operator olan IS NULL istifadə olunur. VB-də city sütunları NULL olan sifarışçıləri seçək:

SELECT *
FROM Customers
WHERE city IS NULL

VB-də belə yazı yoxdur, lakin bu cür yazı ona sifarişçini agentsiz daxil edərkən baş verə bilər.

İndi siz cədvələ ixtiyari cür sual qoşa bilərsiniz. İrəlidə olacaq: aqreqat və sadə funksiyalar, GROUP BY, ORDER BY.

Bunlar sonsuz və daha son, lakin artıq yeni ildir!!!
Dostlar!!! Yeni İliniz Mübarək! :-)

«« SELECT - daha sonra və daha dərin    SELECT - müqayisə, məntiqi və xüsusi operatorlar    Aqreqat funksiyaların köməkliyi ilə verilənlərin ümumiləşdirilməsi »»
Share


Tərcümə edən: Rəşad Əliyev


YER Hostinq

Pulsuz elanlar saytı

Internet Jobs Database