КАТО ОПЕРАТОР

LIKE се прилага само за полета от тип CHAR или VARCHAR, с които се използва за търсене на поднизове. Тези. той претърсва символното поле, за да види дали част от неговия низ отговаря на условието. Като условие той използва заместващи знаци - специални символи, които могат да съответстват на всичко.

Има два типа модели, използвани с LIKE:

  • долната черта ( _ ) замества всеки отделен знак. Например „b_t“ ще съвпадне с „bat“ или „bit“, но няма да съвпадне с „brat“.
  • знакът за процент (%) замества произволен брой знаци (включително нулеви знаци). Например „%p%t“ ще съответства на „put“, „posit“ или „opt“, но не и на „spite“.

Нека намерим всички клиенти, чиито имена започват с G (изходът е показан на Фигура 5.7):

ИЗБЕРЕТЕ ОТ Клиенти WHERE cname LIKE 'G%'; =============== SQL Execution Log ============ SELECT * FROM Customers 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):

SELECT * FROM Salespeople WHERE sname LIKE 'P _ _ l %';

Група от знаци за подчертаване, всеки от които представлява един знак,ще добави само два знака към вече съществуващите 'P' и 'l', така че име като Prettel не може да бъде показано. Заместващият символ ' % ' в края на низа е необходим в повечето реализации, ако дължината на полето sname е по-голяма от броя знаци в името на Peel (защото някои други стойности на sname са по-дълги от четири знака). В този вариант стойността на полето sname, което всъщност се съхранява като име на Peel, е последвано от поредица от интервали. Следователно знакът 'l' няма да се счита за край на реда. Заместващият знак „ % “ просто съвпада с тези интервали. Това не е задължително, ако полето sname е от тип VARCHAR.

=============== SQL Execution Log ============ SELECT * FROM Salespeople WHERE sname LIKE 'P__l'; ============================================= snum name city comm ------ ---------- ----------- ------- 1001 Peel London 0.12 =================================== ========= Фигура 5.8 SELECT използва LIKE с долна черта (_)

Какво бихте направили, ако трябва да потърсите символ за процент или долна черта в низ? В предиката LIKE можете да дефинирате всеки отделен знак като екраниращ знак. Символът ESC се използва непосредствено преди процент или долна черта в предикат и означава, че процентът или долната черта ще се интерпретират като знак, а не като заместващ знак. Например, можем да намерим нашата колона име, където има долна черта като тази:

SELECT * FROM Salespeople WHERE sname LIKE '%/_%' ESCAPE '/';

Няма да има резултат от тези данни, защото не сме включили долна черта в името на нашия продавач. Ключовата дума ESCAPE дефинира '/' като символ ESC. Символът ESC, използван в низ LIKE, е последван от знак за процент, долна черта или ESCAPE, което щеда се търси в колоната, а не да се третира като модел.

Символът ESC трябва да бъде единичен символ и се прилага само за единичния знак непосредствено след него.

В примера по-горе началният процентен знак и крайният процентен знак се третират като заместващи знаци; само долната черта е представена като самия символ.

Както бе споменато по-горе, символът ESC може да се използва и самостоятелно. С други думи, ако търсите колона със знак ESC, просто го въведете два пъти. Символът ESC "приема следващия знак буквално като символ" и, второ, символът ESC стои сам по себе си.

Ето предишния пример, преработен, за да намерите низа „_/“ в колоната sname:

SELECT * FROM Salespeople WHERE sname LIKE '%/_//%' ESCAPE'/';