КампутарыПраграмаванне

Between SQL: прыклады, апісанне

Пры працы з рэляцыйнымі СКБД, у якіх дадзеныя захоўваюцца ў таблічным выглядзе, карыстальнікі часта сутыкаюцца з задачай выбаркі значэнняў, якія ўваходзяць (не ўваходзяць) у пэўны дыяпазон. Мова SQL дазваляе задаць мноства, якому павінна (не павінна) належаць значэнне рознымі варыянтамі - аператарам In, аператарам Like, камбінацыяй умоў больш - менш, а таксама аператарам SQL Between. Апісанне і прыклады ў дадзеным артыкуле будуць прысвечаны апошняму варыянту.

Аператар «Паміж» у SQL: сінтаксіс, абмежаванні

Даслоўна аператар between SQL так і перакладаецца - «паміж». Яго выкарыстанне дазваляе задаць абмежаванне «Ад і Да» да пэўнага полі, і калі чарговае значэнне патрапіць у дыяпазон, то прэдыкатаў прыме значэнне «Ісціна», і значэнне патрапіць у выніковую выбарку.

Сінтаксіс ў аператара гранічна просты:

Select *

From table t1

Where t1.n between 0 and 7

Як бачым, пасля ключавога слова between неабходна ўказаць значэнне ніжняй мяжы дыяпазону, затым AND і значэнне верхняй мяжы.

Пералічым, з якімі тыпамі дадзеных можа працаваць аператар between SQL:

  1. З лікамі - цэлымі і дробавымі.
  2. З датамі.
  3. З тэкстам.

У дадзенага аператара between SQL ёсць пэўныя асаблівасці. Пазнаёмімся з імі:

  1. Пры працы з лікамі і датамі значэння абмежаванняў «Ад і Да» ўключаюцца ў выбарку.
  2. Значэнне ніжняй мяжы дыяпазону павінна быць менш значэння верхняй мяжы, інакш не будзе выведзена нічога, бо ўмова лагічна не дакладна. Асабліва ўважлівым трэба быць, калі замест канкрэтных значэнняў у ўмова ўключаюцца зменныя.

Пры працы з тэкстам значэнне верхняй мяжы дыяпазону не будзе ўключана ў выбарку, калі яно не пазначана гранічна дакладна. У наступных раздзелах разгледзім дадзеную асаблівасць падрабязней.

Выбарка лікаў і дат у вызначаным дыяпазоне

Падрыхтуем табліцу з дадзенымі па менеджэрам, якія працуюць у арганізацыі. Табліца будзе мець наступную структуру:

Імя поля

тып дадзеных

апісанне

код

лічыльнік

Унікальны ідэнтыфікатар супрацоўніка

прозвішча

тэкставы

Прозвішча супрацоўніка

Імя

тэкставы

Імя супрацоўніка

імя па бацьку

тэкставы

імя па бацьку супрацоўніка

падлогу

тэкставы

Пол супрацоўніка (М / Ж)

Дата_приема

Дата / час

Дата прыёму супрацоўніка на працу

Число_детей

лікавы

Колькасць дзяцей у супрацоўніка

Запоўнім табліцу наступнымі дадзенымі:

код

прозвішча

Імя

імя па бацьку

падлогу

Дата_приема

Число_детей

1

Аляксандрава

Ірына

Мікалаеўна

Ж

2014/05/01

1

2

Баравой

Андрэй

Сцяпанавіч

М

2013/09/21

0

3

Вінаградаў

Сяргей

Паўлавіч

М

1998/06/15

1

4

Шумілін

Аляксандр

Барысавіч

М

2004/12/25

2

5

Вішнякоў

Леанід

Аляксандравіч

М

09.10.2007

0

6

Тропников

Васіль

Сяргеевіч

М

2016/01/12

3

7

жамчугоў

Мікіта

Васільевіч

М

2017/01/11

1

8

Аўдзеева

Ніка

Канстанцінаўна

Ж

2001/03/31

2

9

Якаўлеў

Леанід

Мікалаевіч

М

16.02.2009

0

Складзем sql запыт between, які дапаможа нам выбраць ўсіх супрацоўнікаў, якія маюць 2 ці 3 дзіцяці:

SELECT Мэнэджары. *

FROM Мэнэджары

WHERE Менеджеры.Число_детей between 2 and 3

Вынікам стане тры радкі з дадзенымі па супрацоўнікам з прозвішчамі Шумілін, Тропников і Аўдзеева.

Цяпер абярэм супрацоўнікаў, прынятых з 1 студзеня 2005 года па 31 снежня 2016 года. Варта адзначыць, што розныя СКБД па-рознаму дазваляюць запісваць ва ўмовы даты. У большасці выпадкаў дату проста прымусова прыводзяць да выгляду дзень-месяц-год (ці як зручней) і запісваюць у адзінарныя або двайныя двукоссі. У СКБД MS Access дату складаюць у знак «#». Выканаем прыклад як раз на яе аснове:

SELECT Мэнэджары. *, Менеджеры.Дата_приема

FROM Мэнэджары

WHERE Мэнэджары. Дата_приема Between # 1/1/2005 # And # 31/12/2016 #

Вынікам стануць пяць супрацоўнікаў, прынятых на працу ў названы перыяд уключна.

Далей паглядзім, як працуе between SQL з радкамі.

Праца ў between з радкамі

Вельмі частая задача, якую даводзіцца вырашаць пры працы з прозвішчамі супрацоўнікаў, - гэта неабходнасць выбраць толькі тых, чые прозвішчы пачынаюцца на пэўную літару. Паспрабуем і мы выканаць запыт і выбраць супрацоўнікаў, чые прозвішчы пачынаюцца на прозвішчы з А да В:

SELECT Мэнэджары. *

FROM Мэнэджары

WHERE Менеджеры.Фамилия between "А" and "В"

ORDER BY 2

Вынік наступны:

код

прозвішча

Імя

імя па бацьку

падлогу

Дата_приема

Число_детей

8

Аўдзеева

Ніка

Канстанцінаўна

Ж

2001/03/31

2

1

Аляксандрава

Ірына

Мікалаеўна

Ж

2014/05/01

1

2

Баравой

Андрэй

Сцяпанавіч

М

2013/09/21

0

Як бачым, двое супрацоўнікаў, якія маюць прозвішча на літару В, у спіс не патрапілі. З чым гэта звязана? Справа ў тым, якім менавіта чынам аператар параўноўвае радкі няроўнай даўжыні. Радок "В" карацей запісы з "Вінаградаў» і дапаўняецца прабеламі. Але пры сартаванні па алфавіце прабелы апынуцца апераджальнымі сімваламі, і прозвішча ў выбарку не патрапіць. Розныя СКБД па-рознаму прапануюць вырашаць дадзеную праблему, але часцяком прасцей за ўсё для надзейнасці ўказваць наступную літару алфавіту ў дыяпазоне:

SELECT Мэнэджары. *

FROM Мэнэджары

WHERE Менеджеры.Фамилия between "А" and "Г"

ORDER BY 2

Пры выкананні дадзенага запыту вынік нас цалкам задаволіць.

Такі нюанс існуе толькі пры працы з сімвальнымі дадзенымі, аднак ён паказвае, што пры працы нават з такімі простымі аператарамі, як between, трэба быць пільнымі.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.atomiyme.com. Theme powered by WordPress.