Резюме :в този урок ще научите как да заявявате данни въз основа на съвпадение на шаблони с помощта на SQLite LIKE
оператор.
Въведение в SQLite LIKE
оператор
Понякога не знаете точно пълната ключова дума, която искате да потърсите. Например, може да знаете, че най-любимата ви песен съдържа думата elevator
но не знаете точно името.
За да заявите данни въз основа на частична информация, използвате LIKE
оператор в WHERE
клауза на SELECT
изявление, както следва:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Имайте предвид, че можете да използвате и LIKE
оператор в WHERE
клауза от други изрази като DELETE
и UPDATE
.
SQLite предоставя два заместващи знака за конструиране на шаблони. Те са със знак за процент %
и долна черта _
:
- Знакът на процента
%
заместващият знак съответства на всяка последователност от нула или повече знака. - Подчертаването
_
заместващият знак съответства на всеки единичен знак.
Знакът на процента %
примери за заместващи знаци
s%
шаблон, който използва заместващия знак за процент ( %
) съответства на всеки низ, който започва с s
напр.son
и so
.
%er
шаблонът съответства на всеки низ, който завършва с er
като peter
, clever
и др.
И %per%
шаблонът съответства на всеки низ, който съдържа per
като percent
и peeper
.
Подчертаването _
примери за заместващи знаци
h_nt
модел съответства на hunt
, hint
, и т.н. __pple
модел съвпада с topple
, supple
, tipple
, и т.н.
Имайте предвид, че SQLite LIKE
Операторът не е чувствителен към малки и големи букви. Означава "A" LIKE "a"
е вярно.
Въпреки това, за Unicode символи, които не са в ASCII диапазоните, LIKE
операторът е чувствителен към малки и големи букви, напр. "Ä" LIKE "ä"
е невярно.
В случай, че искате да направите LIKE
Операторът работи според малките букви, трябва да използвате следната PRAGMA:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
примери
Ще използваме таблицата tracks
в примерната база данни за демонстрацията.
За да намерите песните, чиито имена започват с Wild
литерален низ, използвате знака за процент %
заместващ знак в края на шаблона.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Опитайте го
За да намерите песните, чиито имена завършват с Wild
word, използвате %
заместващ знак в началото на шаблона.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Опитайте го
За да намерите песните, чиито имена съдържат Wild
литерален низ, използвате %
заместващ знак в началото и края на шаблона:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Следният оператор намира песните, чиито имена съдържат:нула или повече знака (%
), последвано от Br
, последвано от знак ( _
), последвано от wn
, и последвано от нула или повече знака ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Опитайте го
SQLite LIKE
с ESCAPE
клауза
Ако шаблонът, който искате да съпоставите, съдържа %
или _
, трябва да използвате escape знак в незадължителен ESCAPE
клауза, както следва:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Когато посочите ESCAPE
клауза, LIKE
операторът ще оцени expression
който следва ESCAPE
ключова дума към низ, който се състои от един символ или escape знак.
След това можете да използвате този escape знак в шаблона, за да включите буквален знак за процент (%) или долна черта (_
). LIKE
оператор оценява знака за процент (%
) или долна черта (_
), който следва escape символа като литерал, а не заместващ знак.
Да предположим, че искате да съпоставите низа 10%
в колона на таблица. SQLite обаче интерпретира символа за процент %
като заместващ знак. Следователно, трябва да избягвате този символ за процент %
използвайки escape знак:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
В този израз LIKE
Операторът интерпретира първия знак за % и последния % процент като заместващи знаци, а втория знак за процент като буквален символ за процент.
Имайте предвид, че можете да използвате други знаци като escape символ, напр., /, @, $.
Помислете за следния пример:
Първо, създайте таблица t
която има една колона:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
След това вмъкнете няколко реда в таблицата t
:
INSERT INTO t(c)
VALUES('10% increase'),
('10 times decrease'),
('100% vs. last year'),
('20% increase next year');
Code language: SQL (Structured Query Language) (sql)
След това потърсете данни от t
таблица:
SELECT * FROM t;
Code language: SQL (Structured Query Language) (sql)
c
----------------------
10% increase
10 times decrease
100% vs. last year
20% increase next year
Code language: Shell Session (shell)
Четвърто, опитайте се да намерите реда, чиято стойност е в c
колоната съдържа 10%
литерален низ:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Той обаче връща редове, чиито стойности в колоната c съдържат 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Пето, за да получите правилния резултат, използвате ESCAPE
клауза, както е показано в следната заявка:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Ето набора от резултати:
c
------------
10% increase
Code language: Shell Session (shell)
В този урок научихте как да използвате SQLite LIKE
оператор за запитване на данни въз основа на съвпадение на шаблон, използвайки два заместващи знака знак за процент (%
) и долна черта (_
).