Loading...

Фильтрлөөчү операторлор

IN оператору

IN оператору мамычалар болушу керек болгон маанилердин топтомун аныктайт:

1
WHERE выражение [NOT] IN (выражение)

INден кийин кашаанын ичиндеги туюнтма маанилердин топтомун көрсөтөт. Бул топтомду, мисалы, башка суроо-талаптын негизинде динамикалык эсептөөгө болот, же ал туруктуу маанилер болушу мүмкүн.

Мисалы, өндүрүүчүсү Samsung, Xiaomi же Huawei болгон өнүмдөрдү тандап алалы:

1
2
SELECT * FROM Products
WHERE Manufacturer IN ('Samsung', 'HTC', 'Huawei');

MySQLдеги IN оператору

NOT оператору , экинчи жагынан, мамычаларында белгилүү бир маанилери жок бардык саптарды тандоого мүмкүндүк берет:

1
2
SELECT * FROM Products
WHERE Manufacturer NOT IN ('Samsung', 'HTC', 'Huawei');

MySQLде NO IN оператору

Оператор BETWEEN

BETWEEN оператору туюнтма дал келүүгө тийиш болгон баштапкы жана аяктоо маанисин колдонуу менен бир катар маанилерди аныктайт:

1
WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение

Мисалы, баасы 20 000ден 50 000ге чейинки бардык өнүмдөрдү алалы (баштапкы жана акыркы маанилер диапазондо да камтылган):

1
2
SELECT * FROM Products
WHERE Price BETWEEN 20000 AND 50000;

MySQLдеги BETWEEN оператору

Эгерде, тескерисинче, бул диапазонго кирбеген саптарды тандоо керек болсо, анда NOT оператору кошулат :

1
2
SELECT * FROM Products
WHERE Price NOT BETWEEN 20000 AND 50000;

Дагы татаал сөз айкаштарын колдонсо болот. Мисалы, биз товарды жалпы наркы боюнча алабыз (баасы * саны):

1
2
SELECT * FROM Products
WHERE Price * ProductCount BETWEEN 90000 AND 150000;

LIKE жана REGEXP операторлору

LIKE оператору туюнтма дал келүүгө тийиш болгон сап үлгүсүн кабыл алат.

1
WHERE выражение [NOT] LIKE шаблон_строки

Үлгүнү аныктоо үчүн бир нече атайын ийилчээк белгилерди колдонсо болот:

  • % : каалаган сандагы символдор болушу мүмкүн болгон ар кандай ички сапка дал келет жана подсап бир символду камтыбашы мүмкүн

    Мисалы, туюнтма WHERE ProductName LIKE 'Galaxy%'"Galaxy Ace 2" же "Galaxy S7" сыяктуу маанилерге дал келет

  • _ : каалаган бир белгиге дал келет

    Мисалы, туюнтма WHERE ProductName LIKE 'Galaxy S_'"Galaxy S7" же "Galaxy S8" сыяктуу маанилерге дал келет.

Келгиле, LIKE операторун колдонолу:

1
2
SELECT * FROM Products
WHERE ProductName LIKE 'iPhone%';

MySQLдеги LIKE оператору

REGEXP сизге мамычанын мааниси дал келиши керек болгон кадимки туюнтманы көрсөтүүгө мүмкүндүк берет. Бул жагынан алганда, REGEXP LIKE операторуна караганда алда канча татаал жана комплекстүү чыпкалоо ыкмасын билдирет. REGEXP окшош синтаксиске ээ:

1
WHERE выражение [NOT] REGEXP регулярное выражение

Регулярдуу туюнтма төмөнкү өзгөчө белгилерди кабыл алат:

  • ^ : саптын башталышын көрсөтөт

  • $ : саптын аягын көрсөтөт

  • : каалаган бир белгиге дал келет

  • [белгилер] : кашаадагы каалаган бир символго дал келет

  • [start_character-end_character] : белгилердин диапазонундагы каалаган бир белгиге дал келет

  • : эки сап үлгүсүн бөлүп турат жана маани ошол калыптардын бирине дал келиши керек

REGEXP мисалдары:

  • WHERE ProductName REGEXP 'Phone': сапта "Телефон" болушу керек, мисалы, iPhone XNokia Phone N,iPhone

  • WHERE ProductName REGEXP '^Phone': сап "Телефон" менен башталышы керек, мисалы Phone 34,PhoneX

  • WHERE ProductName REGEXP 'Phone$': сап "Телефон" менен бүтүшү керек, мисалы iPhone,Nokia Phone

  • WHERE ProductName REGEXP 'iPhone [78]';: сапта же iPhone 7болбосо болушу керекiPhone 8

  • WHERE ProductName REGEXP 'iPhone [6-8]';: сапта же iPhone 6, же iPhone 7, же болушу керекiPhone 8

Мисалы, аттары "Телефон" же "Галактика" камтылган өнүмдөрдү табалы:

1
2
SELECT * FROM Products
WHERE ProductName REGEXP 'Phone|Galaxy';

MySQLдеги REGEXP оператору

НӨЛ

IS NULL оператору тилкелери NULL болгон бардык саптарды тандоого мүмкүндүк берет:

1
2
SELECT * FROM Products
WHERE ProductCount IS NULL;

NOT операторун кошуу менен , сиз тескерисинче мамычаларында NULL маанилери жок саптарды тандай аласыз:

1
2
SELECT * FROM Products
WHERE ProductCount IS NOT NULL;