mysql like tutorial with syntax
Този урок обяснява съвпадението на шаблоните с помощта на оператора MySQL LIKE:
Съпоставянето на шаблони е важна характеристика в почти всички езици за програмиране, като - Java / C # / Python и т.н., които предимно използват използването на регулярни изрази за съвпадение на шаблони срещу даден низ.
MySQL предоставя лесен за използване оператор, наречен LIKE, който може да се използва за съпоставяне на низовите стойности с определени модели и е полезен за заявки за големи набори от данни.
Какво ще научите:
MySQL LIKE
Синтаксис:
Операторът LIKE се използва заедно с клаузата WHERE в заявка SELECT.
В проста заявка синтаксисът изглежда по-долу.
SELECT {column_names} [*] FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Различните компоненти на този синтаксис са обяснени както следва:
- {column_names}: Това са имената на колоните, които се показват като изход от заявката SELECT. Тези стойности могат да бъдат * за избор на всички колони или разделени със запетая имена на отделни колони.
- {table_name}: Това е името на таблицата, където трябва да се изпълни заявката.
- {column_with_string_value}: Това е колоната, чиито стойности трябва да бъдат изпълнени спрямо посочения модел. Моля, обърнете внимание, че всяко сравнение се извършва в колона, която може да бъде преобразувана в String.
- {match_pattern}: Това е изразът на съвпадение, спрямо който трябва да се сравняват стойностите на колоните. Пример за модели на съвпадение може да бъде - ‘ SM% ’. Това ще съответства на всички стойности на колони, започващи със SM. Пример: УМЕН, МИРИЛ, ДИМ и др.
Подобно на тази заявка, операторът LIKE може да се използва дори със сложни заявки със JOINS и т.н., тъй като LIKE е просто оператор за сравнение и може да се използва навсякъде, където е възможно сравнението на стойността на колоната.
Забележка: Подобно на LIKE, можем да използваме и неговия отхвърлен вариант, който е ‘NOT LIKE’. Така че в този случай, вместо да връщат резултатите от съвпадението, заявките с оператора ‘NOT LIKE’ ще върнат резултати, които не съвпадат.
Модели на съвпадение на MySQL
LIKE Operator може да се използва заедно с 2 вида модели. Те са включени в таблицата по-долу:
модел | |
---|---|
% (Процент) | Съвпадение с произволен брой знаци (включително без никакъв знак) |
_ (Долна черта) | Съвпада с един символ |
Сега ще видим няколко примера, използващи и двата модела.
Шаблон за съвпадение
% pattern се използва, когато искате да съответствате на 0 или повече знака след или преди поставянето му.
Например: ако искате да съчетаете низ „то“ от колона с имена на служители. Да предположим, че има имена като - Amit, Anchit, Arpit, Nikita, Smith и др. Можем да видим, че всички имена имат подниза „it“. Но позиционирането им е различно.
Да предположим, че името на колоната е имена и името на таблицата е имена на ученици.
Използвайте следните примерни скриптове за създаване на данни, за да попълните базата данни:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Нека да видим как можем да използваме шаблона% Match.
SELECT * FROM student_names WHERE name LIKE '%it%'
Изход:
име |
---|
Амит |
Анкит |
Смит |
Никита |
Мохит |
Това, което означава сега, е, че може да съвпада с низ, който има подниза „it“ на всяко място и може да има произволен брой знаци преди и след съвпадението. Можете да видите, че всички съответстващи имена се връщат като изход.
Пренапишете заявката, за да съвпадат само онези имена, които завършват с подниза ‘it’.
SELECT * FROM student_names WHERE name LIKE '%it'
И така, тук премахнахме последния знак „%“ и поставихме низа „it“ в края. Този модел би позволил произволен брой знаци преди „то“, но низът трябва да завършва с подниза „то“.
Резултат от горната заявка:
име |
---|
Амит |
Анкит |
Мохит |
Забележка: Тук е важно да се отбележи, че моделът, споменат с помощта на символа „%“, не чувствителен към регистъра. Така че за горния пример, вместо „% it“ бихме могли да използваме „% IT“ или „% It“, изходът все пак ще остане същият.
_Съчетаване на модел
Нека сега разгледаме как можем да използваме модела на съвпадение ‘_’. Знаем, че „_“ позволява точно един знак.
Да предположим, че искаме да поискаме всички 5 имена на букви от една и съща таблица (имена на ученици).
За да използваме съвпадение на шаблони „_“ в този случай, ние сме посочили пет _ (долни черти) заедно с LIKE Pattern, които ще съответстват само на имената с дължина 5 знака.
SELECT * FROM student_names WHERE name LIKE '_____'
Изход:
име |
---|
Анкит |
Мохит |
Смит |
Нека разгледаме друг пример. Да предположим, че искаме да намерим всичките 5 буквени имена, които завършват с подниза ‘it’
SELECT * FROM student_names WHERE name LIKE '___it'
Тук използвахме 3 ‘_’ (долни черти) и действителния подниз, който трябва да бъде съчетан.
Изход:
име |
---|
Анкит |
Мохит |
Смит |
Комбиниране на% And _ Pattern Matcher
В този раздел ще обсъдим как можем да съпоставим съвпаденията на% и _ модел.
защо моят шлюз по подразбиране продължава да работи офлайн
Да предположим, че искаме да намерим всички имена, които имат подниз „it“ и могат да имат точно 2 знака след думата „it“
SELECT * FROM student_names WHERE name LIKE '%it_'
Тук сме комбинирали както модели на съвпадение%, така и _, за да намерим точното съвпадение.
Изход:
име |
---|
Смит |
Никита |
Използване на NOT LIKE
NOT LIKE е точното отрицание на това, което връща операторът LIKE. т.е. ще върне всички записи / редове, които не съответстват на израза за съвпадение на шаблона.
Пример: Да предположим, че искаме да намерим всички имена, които не са с дължина 4 знака.
конвертирате YouTube в wav файл безплатно
SELECT * FROM student_names WHERE name NOT LIKE '____'
Изход:
име |
---|
Анкит |
Смит |
Никита |
Мохит |
Можете да видите в горния изход, той връща само тези имена, които не са дълги 4 знака.
Използване на MySQL LIKE с ESCAPE Character
Тук ще видим как можем да използваме ESCAPE символи заедно със съвпадението на шаблоните.
Да предположим, че в хипотетична ситуация имаме имена, които всъщност съдържат символи% и _ и искаме да намерим тези имена, тогава всъщност трябва да съвпадаме с% & _. Това може да се постигне с помощта на бягство.
Забележка: Стойността по подразбиране на екраниращия символ е „“ (обратна наклонена черта)
Добавете някои данни към таблиците имена на ученици, които съдържат имена с символи% и _.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
По-долу има няколко примера за по-добро разбиране на това.
# 1) Намерете всички имена, които имат знак%.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Изход:
име |
---|
Дар% n |
Dane_Sherman% |
# две) Намерете всички имена, които имат знак _
SELECT * FROM student_names WHERE name LIKE '%\_%'
Изход:
име |
---|
Джулия_Робъртс |
Dane_Sherman% |
И в двата горни примера можете да видите, че сме използвали изходен символ, за да споменем символите% и _ - т.е. за съвпадение на самия знак% сме използвали изходен знак преди знака% - т.е. като ‘\%’
Използване на Escape Character по ваш избор
Сега нека се опитаме да разширим предишния пример.
MySQL ви позволява да зададете свой собствен ESCAPE знак, който MySQL трябва да използва, докато изпълнява търсенето за съвпадение на шаблони.
Нека опитаме да актуализираме символа Escape на ‘!’ Вместо стойността по подразбиране ‘’
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Изход:
име |
---|
Джулия_Робъртс |
Dane_Sherman% |
В горния пример сме заменили символа за бягство на ‘!’ И сме използвали същото в съвпадението на шаблони ‘%! _%’ - където искаме да съответства на символ ‘_’ в името.
често задавани въпроси
В # 1) Какво означава %% в SQL?
Отговор: „%%“ няма да съответства на нищо конкретно. Това е еквивалентно на само 1% характер. Ако искате да съответствате на самия знак „%“ в стойността на колоната, можете да го използвате с екраниращ символ, който има стойност по подразбиране “.
Да предположим, че искате да съответствате на стойност на колона със знак „%“, можете да напишете съвпадение на шаблона като - ПОДОБНО „% %%“ (забележете допълнителна обратна наклонена черта преди средния процент (%)).
В # 2) Какво представлява заместващ символ в MySQL?
Отговор: MySQL LIKE Operator работи с 2 заместващи знака в MySQL, за да постигне различни начини за съвпадение на шаблони.
Това са:
- % - Това ще съответства на произволен брой знаци (включително нула)
- _ - Това би съответствало на точно един знак
В # 3) Как да напиша LIKE заявка в MySQL?
Отговор: LIKE е прост оператор, който обикновено се използва заедно с клаузата WHERE в заявка SELECT. Използва се за съвпадение на стойностите на колоните с посочения модел.
Пример: Да предположим, че има таблица, съдържаща подробни данни за работника, и тя има колона с име адрес, която съдържа номер на къща, име на улица и т.н. Искате да разберете всички служители, чиято улица е определена като „Оксфорд Лейн“ като адрес.
Можем да използваме оператора LIKE, за да напишем такава заявка.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Моля, имайте предвид, че Струнните модели са без регистрация докато се съпоставя с посочения израз на съвпадение.
Въпрос # 4) Как да зададете различен Escape символ заедно с LIKE Operator?
Отговор: MySQL предоставя начин за определяне на персонализиран Escape символ, който би заменил стандартния, т.е.
Ето пример, който би променил символа за бягство на „!“ За изпълнение на заявката.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
В горната заявка споменахме „!“ Като изходен знак и използвахме същото в израза за съвпадение.
В # 5) Как да съпоставим действителен% или _ знак с помощта на LIKE Operator?
Отговор: Символите като% и _ са специални заместващи знаци, които когато действително трябва да бъдат съпоставени като част от низа, трябва да бъдат избегнати.
Екраниращият знак по подразбиране е „“ и трябва да се използва непосредствено преди споменаването на заместващия знак.
Да предположим, че искаме да съпоставим символа ‘_’ с дадена стойност на колона, тогава можем да запишем израза за съвпадение като - КАТО '%\_%'
Заключение
В този урок научихме за различните начини, по които можем да използваме оператора LIKE (или отхвърлената версия, т.е. NOT LIKE).
Също така обсъдихме поддържаните заместващи знаци, т.е. _ и% и как могат да бъдат избегнати, ако трябва да бъдат част от низа, за да бъдат търсени / съвпадащи.
ОПЕРАТОРЪТ LIKE е мощна функционалност, предоставена от MySQL и обикновено се използва за филтриране на записи, докато се правят заявки за големи набори от данни.
Препоръчително четене
- MySQL Урок за създаване на изглед с примери за кодове
- MySQL UNION - изчерпателен урок с примери за съюз
- MySQL Урок за създаване на таблици с примери
- MySQL Insert Into Table - Вмъкване на изявление Синтаксис и примери
- Синтаксис на командата Unix Cat, Опции с примери
- Урок за C # Regex: Какво представлява C # Редовен израз
- Урок за регексиране на C ++: Регулярни изрази в C ++ с примери
- Урок за Java Regex с примери за редовен израз