Този урок е част от поредицата Научете основни SQL заявки с помощта на MySQL. В този урок ще обсъдим SQL заявките за извършване на операции за търсене върху данните от таблицата в MySQL, използвайки клаузата WHERE с условието LIKE.
Условие за харесване
ХАРЕСВАНЕТО и НЕ ХАРЕСВАМ условията могат да се използват за извършване на операции за търсене на данни от таблицата, като се използва посоченият шаблон.
# LIKE - Syntax
SELECT * FROM `table_name` WHERE `column_name` LIKE '<pattern>';
# NOT LIKE - Syntax
SELECT * FROM `table_name` WHERE `column_name` NOT LIKE '<pattern>';
Обяснение на заявката
ХАРЕСВАНЕТО условието може да се използва за търсене в конкретна колона с помощта на посочения шаблон. Можем да използваме условието LIKE с WHERE, за да извършим операциите за търсене.
Трябва да посочим поне едно условие, използвайки клаузата WHERE за редовете, за да отговарят на изискванията за изтриване, в противен случай цялата таблица ще бъде изтрита. Всички редове на таблицата се изтриват без условието.
Можем да използваме посочените по-долу заместващи знаци с условие LIKE, за да прецизираме резултатите от търсенето.
Процент (%) - Представлява нула, един или няколко знака
Подчертаване (_) - Представлява един знак
Можем също да използваме ключовата дума ESCAPE, за да включим заместващите знаци в резултатите от търсенето.
Примери
Този раздел предоставя примери за извършване на операции за търсене с помощта на условието LIKE с клауза WHERE. Използвайте посочената по-долу заявка, за да създадете потребителска таблица с идентификатор, собствено име, фамилия и активни колони за съхраняване на потребителски данни.
# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));
Посочената по-долу заявка може да се използва за вмъкване на данни в потребителската таблица.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 1, 'John', 'Smith', 1 ),
( 2, 'Rick', 'Jones', 1 ),
( 3, 'Catherine', 'Ponting', 0 ),
( 4, 'Harsh', 'Upadhyay', 1 ),
( 5, 'Tajwinder', 'Singh', 0 );
Гореспоменатата заявка ще вмъкне 5 реда в таблицата с идентификатор, собствено име, фамилия и активни колони, за да представят 5 различни потребители.
Сега ще използваме условието LIKE с клаузата WHERE, за да търсим или в колоните с име или фамилия на потребителската таблица. Може да се направи с помощта на WHERE LIKE в MySQL, както е показано по-долу.
# LIKE - Exact search - Single Condition
SELECT * FROM `user` WHERE `first_name` LIKE 'John';
SELECT * FROM `user` WHERE `first_name` LIKE 'john';
# Result
1 John Smith 1
# LIKE - Exact search - Multiple Conditions
SELECT * FROM `user` WHERE `first_name` LIKE 'Rick' AND `last_name` LIKE 'Jones';
# Result
2 Rick Jones 1
# NOT LIKE - Exact search - Single Condition
SELECT * FROM `user` WHERE `first_name` NOT LIKE 'John';
# Result
2 Rick Jones 1
3 Catherine Ponting 0
4 Harsh Upadhyay 1
5 Tajwinder Singh 0
Гореспоменатите заявки извършват точно търсене, използвайки WHERE LIKE и дадения шаблон. Условието LIKE игнорира регистра, докато съпоставя със стойностите на колоната. Той предоставя същия резултат с главни или малки букви.
Сега ще използваме заместващия знак, за да извършим търсенето, както е показано по-долу.
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '%ine';
# Result
3 Catherine Ponting 0
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE 'Cat%in%';
# Result
3 Catherine Ponting 0
# LIKE - % Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '%in%';
# Result
3 Catherine Ponting 0
5 Tajwinder Singh 0
# LIKE - _ Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '_ohn';
# Result
1 John Smith 1
# LIKE - % & _ Wildcard search
SELECT * FROM `user` WHERE `first_name` LIKE '_oh%';
# Result
1 John Smith 1
Посочената по-долу заявка обяснява използването на ключовата дума ESCAPE с условието LIKE.
# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `active` ) VALUES
( 6, 'Jo%hn', 'Waugh', 1 ),
( 7, 'Rick', 'Jones', 1 );
# LIKE - ESCAPE - Exact search
SELECT * FROM `user` WHERE `first_name` LIKE '%#%hn' ESCAPE '#';
# Result
6 Jo%hn Waugh 1
Ето как можем да използваме условието LIKE с клаузата WHERE със и без заместващ знак, за да изпълняваме операции за търсене, използвайки посочения шаблон.