Оператор like
LIKE застосовується тільки до полів типу CHAR або VARCHAR, з якими він використовується для пошуку підрядків. Тобто. він шукає поле символу, щоб бачити, чи збігається з умовою частина його рядка. Як умову він використовує групові символи (wildkards) - спеціальні символи, які можуть відповідати чомусь. Є два типи групових символів, що використовуються з LIKE: * символ підкреслення ( _ ) замінює будь-який одиночний символ. Наприклад, 'b_t' відповідатиме словам 'bat' або 'bit', але не відповідатиме 'brat'. * знак відсотка (%) замінює послідовність будь-якого числа символів (включаючи символи нуля). Наприклад, '%p%t' відповідатиме словам 'put', 'posit', або 'opt', але не 'spite'. Давайте знайдемо всіх замовників чиї імена починаються з G (висновок показується в Рисунку 5.7):
WHERE cname LIKE 'G%';
WHERE cname LIKE 'G';
cnum cname city rating snum
2002 Giovanni Rome 200 1003
2004 Grass Berlin 300 1002
Рисунок 5. 7: SELECT використовує LIKE з % LIKE може бути зручним якщо ви шукаєте їм або інше значення, і якщо ви не пам'ятаєте, як вони точно пишуться. Припустимо, що ви невпевнені, як записано по літерах їм одного з ваших продавців Peal або Peel. Ви можете просто використовувати ту частину, яку ви знаєте і групові символи, щоб знаходити всі можливі пари (виведення цього запиту показується в Рисунку 5.8)
WHERE sname LIKE 'P _ _ l %';
Групові символи підкреслення, кожен з яких представляє один символ, додадуть лише два символи до існуючих 'P' і 'l' , тому їм на зразок Prettel не може бути показано. Груповий символ ' % ' - в кінці рядка необхідний в більшості реалізацій якщо довжина підлогу sname більше ніж число символів в імені Peel ( тому що деякі іншізначення sname - довше ніж чотири символи). У такому разі, значення підлогу sname, фактично зберігається як їм Peel, супроводжується рядом прогалин. Отже, символ 'l' не розглядатиметься кінцем рядка. Груповий символ "%" - просто відповідає цим пробілам. Це необов'язково, якщо підлога sname має тип – VARCHAR.
WHERE sname LIKE 'P 1%';
snum sname city comm
1001 Peel London 0.12
Рисунок 5.8: SELECT використовує LIKE з підкресленням (_) А що ж Ви робитимете якщо вам потрібно шукати знак відсотка або знак підкреслення у рядку? У LIKE предикаті, можна визначити будь-який одиночний символ як символ ESC. Символ ESC використовується відразу перед відсотком або підкресленням у предикаті, і означає, що відсоток або підкреслення буде інтерпретуватися як символ, а не як груповий символ. Наприклад, ми могли б знайти наш sname стовпець де присутній підкреслення, так:
WHERE sname LIKE '%/_%'ESCAPE'/';
З цими даними не буде жодного висновку, тому що ми не включили жодного підкреслення у ньому нашого продавця. Пропозиція ESCAPE визначає '/' як символ ESC. Символ ESC, що використовується в LIKE рядку, супроводжується знаком відсотка, знаком підкреслення, або знаком ESCAPE, який шукатиметься в стовпці, а не обробляти з як груповий символ. Символ ESC повинен бути одиночним символом і застосовуватися лише до одиночного символу відразу після нього. У прикладі вище, символ відсотка початку та символ відсотка закінчення обробляються як групові символи; лише підкреслення надано саме собі. Як згадано вище, символ ESC також може використовуватися самостійно. Іншими словами, якщо ви шукатимете стовпець із символом ESC, ви просто вводите його двічі. По-перше, це будеозначає, що символ ESC "бере наступний символ буквально як символ", і по-друге, що символ ESC самостійний. Є попередній приклад що переглянутий щоб шукати місцезнаходження рядка '_/' у стовпці sname:
WHERE sname LIKE '%/_//%'ESCAPE'/';