BETWEEN оператор нь утгын мужтай харьцуулахад логикийн тестийг гүйцэтгэдэг. Хэрэв утга мужид байгаа бол оператор ҮНЭН, тухайн муж дотор байхгүй бол ХУДАЛ гэсэн хариуг өгнө. Хэрэв муж дахь ямар нэг утга NULL (үл мэдэгдэх) байвал үр дүн нь NULL болно.

EXISTS оператор нь утгын хувьд ANY/SOME оператортой тэнцүү.

SQL 2003 синтакс

СОНГОХ * WHERE илэрхийлэл доод_хэмжээ ба дээд_хэмжээний хооронд

Түлхүүр үгс

WHERE илэрхийлэл

Скаляр илэрхийллийг (багана гэх мэт) дээд хязгаар ба доод хязгаарын хоорондох утгын мужтай харьцуулан шалгадаг. Доод_хил, дээд_хязгаар

Илэрхийллийг доод_хэмжээ болон дээд_хязгаартай харьцуулна. Харьцуулалт нь туйлын утгуудыг агуулна, өөрөөр хэлбэл “илэрхийлэл нь доод хязгаараас их буюу тэнцүү, дээд хязгаараас бага эсвэл тэнцүү байна> гэсэнтэй ижил байна.

Ерөнхий дүрмүүд

BETWEEN оператор нь илэрхийллийг утгын мужтай харьцуулан шалгахад хэрэглэгддэг. BETWEEN операторыг BLOB, CLOB, NCLOB, REF, ARRAY-аас бусад ямар ч төрлийн өгөгдлийн төрөлд ашиглаж болно.

Жишээлбэл, бид тухайн жилийн борлуулалтын хэмжээ (ytd_sales) 10,000-аас 20,000-ын хооронд байгаа бүтээлийн тоог (гарчиг_id) харах хэрэгтэй.

ytcL худалдах 10000-аас 20000-ын хооронд байгаа гарчигнаас гарчгийн_id-г СОНГОХ

BETWEEN оператор нь хүрээний хил хязгаарыг агуулдаг. Энэ тохиолдолд үр дүн нь 10000 ба 20000 утгуудыг агуулна. Хэрэв та муж улсын хил хязгаарыг оруулалгүйгээр хайлт хийх шаардлагатай бол (>) ба түүнээс бага () гэсэн утгыг ашиглах ёстой.<).

ytd.sales > 10000 БОЛОН ytd_sales-с ХААНА гарчигнаас гарчгийн_id-г СОНГОХ< 20000

NOT оператор нь BETWEEN операторын заасан хязгаараас цааш хайлт хийх боломжийг олгодог. Тиймээс та 2003 онд хэвлэгдээгүй бүх бүтээлийн дугаарыг (title_id) олох боломжтой.

Зарим програмистууд AND түлхүүр үгийг WHERE заалтуудад хэрхэн ашигладаг талаар маш нарийн үздэг. Кодын талаар мэдэхгүй хүн BETWEEN хэллэгт ашигласан AND операторыг логик оператор гэж бодохоос сэргийлэхийн тулд BETWEEN заалтыг бүхэлд нь хаалтанд хийж болно.

Гарчиг_id-г ХААНА (ytd_sales" 10000 БА 20000 ХООРОНД) СОНГОХ БОЛОН pubdate >= "1991-06-12 00:00:00.000"

Өөр өөр платформ дээрх хэрэгжилтийн ялгаа

Дээр дурдсанчлан бүх платформууд BETWEEN операторыг дэмждэг.

Мэдээллийн санд ажиллахаар үүсгэсэн аливаа асуулга нь шаардлагатай мэдээлэлд хандах хандалтыг хялбаршуулдаг. Өмнөх нийтлэлд би нийтлэг нөхцөлт мэдэгдлийн талаар ярьсан. Энэ нийтлэлд би танд сонирхолтой дэлгэрэнгүй мэдээллийг өгөх боломжтой асуулга үүсгэх боломжийг олгодог операторуудын талаар ярих болно, тэр үед AND, OR операторуудын асуулгаар олоход тийм ч хялбар биш юм.
Тусгай операторуудын нэг нь IN. Энэ оператор нь шаардлагатай мэдээллийг харуулах шаардлагатай мужийг тохируулах боломжийг танд олгоно. Өртэй хүмүүсийн талаарх мэдээлэл рүү буцъя

Өртэй хүмүүс

Тоо Сар Жил Нэр Хот Хаяг Өр
0001 долдугаар сар2012 ИвановСтавропольСтавропольская, 150000
0002 Арванхоёрдугаар сар2019 КононовТатарЗагородная, 254684068
0003 Тавдугаар сар2013 ЯмшинМихайловскСельская, 48 настай165840
0004 Наймдугаар сар2012 ПрениСтавропольТөв, 1646580
... ... ... ... ... ... ...
9564 Гуравдугаар сар2015 УлиеваДеминоОлон улсын, 156435089
9565 Аравдугаар сар2012 ПавловаСтавропольВокзальная, 37 настай68059
9566 Нэгдүгээр сар2012 УрюпаМихайловскФонтанная, 19 настай51238
9567 Арваннэгдүгээр сар2017 ВалетовТатарВьездная, 65 настай789654

Та Ставрополь эсвэл Татарка хотын бүх зээлдэгчийг сонгох хэрэгтэй гэж бодъё. Өмнөх оруулгатай ижил төстэй байдлаар та асуулга ашиглах хэрэгтэй болно
СОНГОХ *
Өртэй хүмүүсээс
ХААНА хот = "Ставрополь"
OR Хот = "Татарка";

Юуны өмнө, үүссэн код нь төвөгтэй юм. Тусгай операторуудыг ашигласнаар та илүү авсаархан код авах боломжтой.
СОНГОХ *
Өртэй хүмүүсээс
ХААНА хот ("Ставрополь", "Татарка");

Үр дүн нь байх болно

Хөтөлбөрийн логикийг дагаж мөрдье. SELECT, FROM, WHERE түлхүүр үгсээр. Харин дараа нь IN оператор гарч ирнэ. Энэ нь програмыг үйлдлүүдийн дарааллаар тогтоодог - энэ нь "Хот" баганад байгаа мэдээллийн сангийн мэдээллийг үзэх шаардлагатай. Мөн харуулахын тулд та "Ставрополь", "Татарка" гэсэн өгөгдлийг сонгох хэрэгтэй.
Тодорхой хэмжээний өр дээр үндэслэн сонголт хийх шаардлагатай жишээг авч үзье.
СОНГОХ *
Өртэй хүмүүсээс
WHERE Debt IN (435089, 789654, 684068);

Үр дүн нь дараах байдалтай байх болно

Тэдгээр. IN оператор нь мэдээллийн баазыг бүхэлд нь сканнердаж, заасан мэдээлэл сонгох параметрүүд байгаа эсэхийг шалгадаг.
Өөр тусгай операторыг ашигласнаар нөхцөл байдал өөр байна ХООРОНД. Хэрэв оператор INтусгайлан заасан параметр бүхий мэдээллийг авч үзсэн, дараа нь оператор ХООРОНД- тодорхой хүрээний хооронд. Гэсэн хэдий ч, энэ операторын англи хэлнээс орчуулга болон түүний бодит зорилгын хооронд зүйрлэл хийх ёсгүй. Хэрэв та 1 ба 5-ын хооронд гэж зааж өгвөл энэ нь 2, 3, 4 гэсэн тоонууд үнэн байх болно гэсэн үг биш юм. Жишээлбэл, энэ нь иймэрхүү харагдах болно.
СОНГОХ *
Өртэй хүмүүсээс
ХААНА 30000-100000 ХООРОНДЫН өр;

Үр дүн нь байх болно

Өөрөөр хэлбэл, SQL операторыг хүлээн зөвшөөрсөн ХООРОНД"Өр" баганад 30000-аас 100000 хүртэлх аль ч утгын хувьд.
Ойролцоогоор мужийг тоон утгаар зааж өгөхөөс гадна та заасан мужын эхний үсгийг агуулсан мэдээллийг харуулдаг цагаан толгойн дарааллыг зааж өгч болно. Гэхдээ энд нэг сонирхолтой зүйл байна. Дараах хүсэлтийг үүсгэцгээе
СОНГОХ *
Өртэй хүмүүсээс
ХААНА "БИ" ба "P" ХООРОНД СНАМ;

Дараа нь дараах өгөгдөл гарч ирнэ

Логик асуулт: "Яагаад овогтой зээлдэгчид Прени ба ПАвлова? Эцсийн эцэст тэдний овог нэрийн эхний үсэг нь заасан хязгаарт багтсан болно!" Үсгүүд багтсан боловч овог нэр байхгүй. Энэ нь ийм төрлийн асуулгад SQL хэл нь зөвхөн хайлтын уртыг хүлээн зөвшөөрдөгтэй холбоотой юм. Өөрөөр хэлбэл, мөрийн урт нь асуулга дахь "P" тэмдэгт бөгөөд мэдээллийн сан дахь "Preni" ба "Павлова" мөрийн урт нь тус тус байна овог ". БА vanov" нь мужаас эхэлдэг тул мужид багтдаг БА, эхлэл болгон нэг тэмдэгт урт.

Энэ нийтлэлд бид авч үзэх болно Логик операторын хооронд T-SQLТа энэ оператор гэж юу болох, түүнийг хэрхэн ашиглах талаар сурах болно. Мэдээжийн хэрэг бид BETWEEN оператор ашиглан SQL асуулгын жишээг үзэх болно.

T-SQL дээрх BETWEEN оператор

ХООРОНДнь тест хийх мужийг тодорхойлдог T-SQL логикийн оператор юм. Өөрөөр хэлбэл, BETWEEN-ийн тусламжтайгаар бид утга нь тодорхой хязгаарт байгаа эсэхийг шалгаж болно.

Синтакс

туршилтын_илэрхийлэл[БИШ ] ХООРОНД эхлэл_илэрхийлэлБА төгсгөлийн_илэрхийлэл

Аргументуудын тайлбар

  • туршилтын_илэрхийлэл – эхлэл_илэрхийлэлээс төгсгөлийн_илэрхийлэл хүртэлх хүрээнд гишүүнчлэлийн шалгалтанд хамрагдах илэрхийлэл;
  • эхлэл_илэрхийлэл – мужын эхлэлийг тодорхойлох илэрхийлэл;
  • төгсгөлийн_илэрхийлэл – хүрээний төгсгөлийг тодорхойлох илэрхийлэл.

Бүх илэрхийлэл нь ижил өгөгдлийн төрөлтэй байх ёстой.

BETWEEN оператор нь дараах утгыг буцаана (Boolean):

  • ҮНЭН – хэрэв туршилтын_илэрхийллийн аргументын утга нь эхлэлийн_илэрхийллийн утгаас их буюу тэнцүү, төгсгөлийн_илэрхийллийн утгаас бага эсвэл тэнцүү бол, өөрөөр хэлбэл. туршилтын_илэрхийлэл нь эхлэл_илэрхийлэлээс төгсгөлийн_илэрхийлэл хүртэлх мужид байна;
  • FALSE - хэрэв туршилтын_илэрхийллийн аргументын утга эхлэл_илэрхийлэлээс төгсгөлийн_илэрхийлэл хүртэлх мужид байхгүй бол.

Ашиглах замаар Түлхүүр үг БИШбид предикатын үр дүнг урвуулж болно, өөрөөр хэлбэл, NOT BETWEEN гэдэг нь тухайн утгыг өгөгдсөн хязгаарт багтаагүй эсэхийг шалгахыг хүсч байна гэсэн үг юм.

Энэ тохиолдолд туршилтын_илэрхийллийн аргументын утга эхлэл_илэрхийлэлээс төгсгөлийн_илэрхийлэл хүртэлх мужид байхгүй бол NOT BETWEEN оператор ҮНЭНийг буцаана.

BETWEEN доторх илэрхийллүүдийн ядаж нэг нь NULL утгатай байвал үр дүн нь тодорхойгүй болно.

Тэмдэглэл! NULL (энэ нь хоосон биш эсвэл 0, энэ нь утга байхгүй) гэх мэт утгуудыг SQL серверээр тусгай аргаар боловсруулдаг гэдгийг би та нарт сануулж байна NULL утгыг агуулсан SQL асуулга нь тодорхой бөгөөд урьдчилан таамаглах боломжгүй байж болно.

Тэмдэглэл! Хэрэв та шинэхэн програмист бол T-SQL хэлийг эхнээс нь сурахыг хүсч байвал би T-SQL хэлний үндсүүдийн талаар дэлгэрэнгүй ярьдаг "T-SQL програмистын арга" номоо уншихыг зөвлөж байна. Мөн дэвшилтэт бүтээн байгуулалтад ихээхэн анхаарал хандуулдаг.

Жишээ нь эх сурвалж мэдээлэл

Миний сервер бол Microsoft SQL Server 2016 Express юм. Жишээлбэл, бидэнд TestTable хүснэгт байгаа бөгөөд энэ нь дараах өгөгдлийг агуулж байна гэж төсөөлье. үнийн заалт бүхий барааны жагсаалт). Би INSERT INTO хэллэгийг ашиглан хүснэгтэд мөр нэмнэ.

Хүснэгт үүсгэх CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NULL) GO --Хүснэгтэнд мөр нэмэх INSERT INTO TestTable(ProductName, Price) VALUES ("Системийн нэгж", 300), (" Монитор ", 200), ("Гар", 100), ("Хулгана", 50), ("Хэвлэгч", 200), ("Сканер", 150), ("Утас", 250), (" Таблет" , 300) GO --Тестийн хүснэгтээс өгөгдлийг СОНГОХ * сонгох

WHERE заалтын BETWEEN операторыг ашиглах жишээ

Үнэ нь 100-аас 200 рублийн хооронд байгаа бүх бүтээгдэхүүнийг харуулах SQL асуулга бичье.

Операторыг ашиглах нөхцөл байдал 100-аас 200-ийн хооронд байгаа Туршилтын хүснэгтээс бүтээгдэхүүний ID, Бүтээгдэхүүний нэр, үнийг сонго.

Бид энэ асуулгыг BETWEEN оператор ашиглахгүйгээр бичиж болно, жишээ нь дараах SQL асуулга нь туйлын тэнцүү байна.

Харьцуулах операторуудыг ашиглах нөхцөл Бүтээгдэхүүний ID, Бүтээгдэхүүний нэр, Үнийг Тестийн хүснэгтээс СОНГОХ ХААНА Үнэ >= 100 ба үнэ<= 200

Таны харж байгаагаар үр дүн нь адилхан боловч BETWEEN тохиолдолд нөхцөл нь илүү ойлгомжтой, ойлгомжтой харагдаж байгаа бөгөөд үүнээс гадна бид шалгах илэрхийллийг (Үнэ) зөвхөн нэг удаа, харьцуулах операторын хувьд хоёр удаа бичсэн.

IF болзолт хэллэгт BETWEEN операторыг ашиглах жишээ

BETWEEN операторыг зөвхөн WHERE өгүүлбэрт ашиглахаас гадна T-SQL-ийн бусад бүтцэд, жишээлбэл, IF нөхцөлт бүтцэд ашиглаж болно. Дараах жишээнд бид @TestVar хувьсагчийг шалгаж, энэ хувьсагчийн утга 1-10 хооронд байгаа эсэхийг шалгах ба хэрэв тийм бол бид шаардлагатай үйлдлээ хийх болно, жишээ нь би зүгээр л SELECT хүсэлт илгээх болно. .

"@TestVar хувьсагч 1-ээс 10 хүртэлх мужид байна" ГЭВЭЛ @TestVar 1-10 ХООРОНД СОНГОХ БОЛ @TestVar INT = 5 ГЭДГИЙГ [Үр дүн] ГЭЖ ЗАРЛА.


NOT BETWEEN операторыг ашиглах жишээ

Одоо NOT түлхүүр үгийг ашиглан асуулга бичье, жишээлбэл, бид үнэ нь 100-аас 200 рубль хүртэлх бүх бүтээгдэхүүнийг харуулах хэрэгтэй. Би мөн харьцуулах операторуудыг ашиглан ижил төстэй жишээг хавсаргав).

Операторыг ашиглах нөхцөл Бүтээгдэхүүний ID, БүтээгдэхүүнийНэр, Туршилтын Хүснэгтээс Үнэ 100-аас 200 ХОНООС БОЛОХГҮЙ БАЙНА --Харьцуулах операторуудыг ашиглах нөхцөл Бүтээгдэхүүний ID, БүтээгдэхүүнийНэр, Тестийн Хүснэгтээс Үнийг ХААНА Үнэ< 100 OR Price > 200

Энэ тохиолдолд үнэ нь 100-аас бага эсвэл 200 рубльээс дээш үнэтэй бүх барааг бидэнд өгсөн.

T-SQL хэлэнд BETWEEN оператороос гадна бусад логик операторууд байдаг, жишээлбэл, EXISTS оператор нь зарим тохиолдолд энэ талаар маш их хэрэгтэй байж болох юм.

Энэ бол одоохондоо надад байгаа зүйл!

Мэдээллийг хүснэгт хэлбэрээр хадгалдаг харилцааны DBMS-тэй ажиллахдаа хэрэглэгчид тодорхой хүрээнд багтсан (оруулаагүй) утгуудыг сонгох даалгавартай тулгардаг. SQL хэл нь In оператор, Like оператор, түүнээс их - бага нөхцлүүдийн хослол, мөн SQL Between оператор зэрэг янз бүрийн сонголтуудыг ашиглан утга хамаарах (байх ёстой) багцыг зааж өгөх боломжийг олгодог. Энэ нийтлэл дэх тайлбар, жишээнүүд нь сүүлчийн хувилбарт анхаарлаа хандуулах болно.

SQL дахь "Хооронд" оператор: синтакс, хязгаарлалт

Оператор хоорондын SQL нь шууд утгаараа "хоорондоо" гэж орчуулагддаг. Үүний хэрэглээ нь тодорхой талбарт "Хээс, хүрэх" хязгаарлалтыг тохируулах боломжийг олгодог бөгөөд хэрэв дараагийн утга нь мужид орвол предикат нь "Үнэн" гэсэн утгыг авч, эцсийн сонголтод утгыг оруулна.

Операторын синтакс нь маш энгийн:

Энд t1.n 0-ээс 7 хооронд байна

Таны харж байгаагаар, хооронд түлхүүр үгийн дараа та мужын доод хязгаарын утгыг, дараа нь AND болон дээд хязгаарын утгыг зааж өгөх ёстой.

SQL операторын хооронд ямар өгөгдлийн төрлүүдтэй ажиллах боломжтойг жагсаая:

  1. Тоогоор - бүхэл ба бутархай.
  2. Огноотой.
  3. Текстийн хамт.

Энэ нь SQL операторын хооронд тодорхой онцлог шинж чанартай байдаг. Тэдэнтэй танилцацгаая:

  1. Тоо, огноотой ажиллахдаа сонголтод "Бас" болон "Хэлэх" хязгаарлалтын утгуудыг оруулсан болно.
  2. Мужийн доод хязгаарын утга нь дээд хязгаарын утгаас бага байх ёстой, эс тэгвээс нөхцөл нь логикийн хувьд хүчингүй тул юу ч харагдахгүй. Тодорхой утгуудын оронд хувьсагчдыг нөхцөлт оруулах үед та онцгой болгоомжтой байх хэрэгтэй.

Тексттэй ажиллахдаа хязгаарын дээд хязгаарын утгыг маш нарийн заагаагүй бол сонголтод оруулахгүй. Дараагийн хэсгүүдэд бид энэ функцийг илүү нарийвчлан авч үзэх болно.

Тодорхой хязгаарт тоо, огноог сонгох

Байгууллагад ажиллаж буй менежерүүдийн мэдээлэл бүхий хүснэгтийг бэлдье. Хүснэгт нь дараах бүтэцтэй байна.

Талбайн нэр

Өгөгдлийн төрөл

Тодорхойлолт

Өвөрмөц ажилтны таних тэмдэг

Текст

Ажилтны овог нэр

Текст

Ажилтны нэр

Овог

Текст

Ажилтны дунд нэр

Текст

Ажилтны хүйс (M/F)

Хүлээн авсан огноо

Он сар өдөр цаг

Ажилтныг ажилд авсан огноо

Хүүхдийн тоо

Тоон

Ажилтны хүүхдийн тоо

Хүснэгтийг дараах мэдээллээр дүүргэцгээе.

Код

Овог

Нэр

Овог

Шал

Хүлээн авсан огноо

Хүүхдийн тоо

Александрова

Николаевна

Степанович

Виноградов

Павлович

Александр

Борисович

Вишняков

Александрович

Тропников

Сергеевич

Жемчугов

Васильевич

Константиновна

Николаевич

2 эсвэл 3 хүүхэдтэй бүх ажилчдыг сонгоход бидэнд туслах хооронд бий болгоё:

Үр дүн нь Шумилин, Тропников, Авдеева гэсэн нэр бүхий ажилчдын мэдээлэл бүхий гурван мөр болно.

Одоо 2005 оны 1-р сарын 1-нээс 2016 оны 12-р сарын 31 хүртэл ажилд орсон ажилчдыг шалгаруулна. Өөр өөр DBMS нь огноог өөр өөр аргаар бичих боломжийг олгодог гэдгийг тэмдэглэх нь зүйтэй. Ихэнх тохиолдолд огноог өдөр-сар-жил (эсвэл илүү тохиромжтой аль нь ч байсан) маягт руу оруулах бөгөөд дангаар эсвэл DBMS-д огноог "#" тэмдэгт хавсаргасан байдаг. Үүний үндсэн дээр жишээ татъя:

Менежерүүдийг SELECT.*, Managers.Reception_date

Менежерүүдээс

ХААНА менежерүүд. Хүлээн авах_огноо #1/1/2005# болон #31/12/2016# хооронд

Үүний үр дүнд заасан хугацаанд таван ажилтан ажилд авна.

Мөр хооронд ажиллах

Ажилчдын овогтой ажиллахдаа шийдвэрлэх ёстой нийтлэг асуудал бол зөвхөн овог нь тодорхой үсгээр эхэлсэн хүмүүсийг сонгох явдал юм. Хүсэлтийг биелүүлж, овог нь А-аас Б хүртэлх овог нэрээр эхэлсэн ажилчдыг сонгохыг хичээцгээе.

Үр дүн нь дараах байдалтай байна.

Эндээс харахад Б үсгээр эхэлсэн овогтой хоёр ажилтан жагсаалтад ороогүй. Энэ юутай холбоотой вэ? Гол нь оператор тэгш бус урттай мөрүүдийг яг яаж харьцуулж байгаа явдал юм. "В" мөр нь "Виноградов" мөрөөс богино бөгөөд хоосон зайгаар дүүрсэн байна. Гэхдээ цагаан толгойн дарааллаар эрэмбэлэх үед хоосон зайд тэргүүлэх тэмдэгтүүд байх бөгөөд овог нь сонголтонд орохгүй. Өөр өөр DBMS-ууд энэ асуудлыг шийдэх өөр өөр арга замыг санал болгодог боловч ихэнхдээ аюулгүй байх хамгийн хялбар арга бол цагаан толгойн цагаан толгойн дараах үсгийг тухайн мужид зааж өгөх явдал юм.

Энэ хүсэлтийг биелүүлэхэд үр дүн нь биднийг бүрэн хангах болно.

Энэ нюанс нь зөвхөн тэмдэгтийн өгөгдөлтэй ажиллахад л байдаг боловч энгийн операторуудтай ажиллахдаа болгоомжтой байх хэрэгтэйг харуулж байна.


Хаах