Riepilogo :in questo tutorial imparerai come interrogare i dati in base al pattern matching usando SQLite LIKE
operatore.
Introduzione a SQLite LIKE
operatore
A volte, non conosci esattamente la parola chiave completa che desideri interrogare. Ad esempio, potresti sapere che la tua canzone preferita contiene la parola elevator
ma non conosci esattamente il nome.
Per interrogare i dati sulla base di informazioni parziali, utilizzi il LIKE
operatore nel WHERE
clausola del SELECT
dichiarazione come segue:
SELECT
column_list
FROM
table_name
WHERE
column_1 LIKE pattern;
Code language: SQL (Structured Query Language) (sql)
Nota che puoi anche usare il LIKE
operatore nel WHERE
clausola di altre affermazioni come DELETE
e UPDATE
.
SQLite fornisce due caratteri jolly per la costruzione di modelli. Sono il segno di percentuale %
e sottolinea _
:
- Il segno di percentuale
%
il carattere jolly corrisponde a qualsiasi sequenza di zero o più caratteri. - Il trattino basso
_
il carattere jolly corrisponde a qualsiasi singolo carattere.
Il segno di percentuale %
esempi di caratteri jolly
Il s%
pattern che utilizza il carattere jolly del segno di percentuale ( %
) corrisponde a qualsiasi stringa che inizia con s
es.,son
e so
.
Il %er
pattern corrisponde a qualsiasi stringa che termina con er
come peter
, clever
, ecc.
E il %per%
pattern corrisponde a qualsiasi stringa che contiene per
come percent
e peeper
.
Il trattino basso _
esempi di caratteri jolly
Il h_nt
il modello corrisponde a hunt
, hint
, ecc. Il __pple
il modello corrisponde a topple
, supple
, tipple
, eccetera.
Nota che SQLite LIKE
l'operatore non fa distinzione tra maiuscole e minuscole. Significa "A" LIKE "a"
è vero.
Tuttavia, per i caratteri Unicode che non sono negli intervalli ASCII, il LIKE
l'operatore fa distinzione tra maiuscole e minuscole, ad esempio "Ä" LIKE "ä"
è falso.
Nel caso tu voglia fare LIKE
operatore opera con distinzione tra maiuscole e minuscole, è necessario utilizzare il seguente PRAGMA:
PRAGMA case_sensitive_like = true;
Code language: SQL (Structured Query Language) (sql)
SQLite LIKE
esempi
Useremo la tabella tracks
nel database di esempio per la dimostrazione.
Per trovare le tracce i cui nomi iniziano con Wild
stringa letterale, usi il segno di percentuale %
carattere jolly alla fine del pattern.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE 'Wild%'
Code language: SQL (Structured Query Language) (sql)
Provalo
Per trovare le tracce i cui nomi terminano con Wild
parola, usi %
carattere jolly all'inizio del pattern.
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild'
Code language: SQL (Structured Query Language) (sql)
Provalo
Per trovare le tracce i cui nomi contengono il Wild
stringa letterale, usi %
carattere jolly all'inizio e alla fine del pattern:
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Wild%';
Code language: SQL (Structured Query Language) (sql)
Provalo
La seguente istruzione trova le tracce i cui nomi contengono:zero o più caratteri (%
), seguito da Br
, seguito da un carattere ( _
), seguito da wn
e seguito da zero o più caratteri ( %
).
SELECT
trackid,
name
FROM
tracks
WHERE
name LIKE '%Br_wn%';
Code language: SQL (Structured Query Language) (sql)
Provalo
SQLite LIKE
con ESCAPE
clausola
Se il pattern che vuoi abbinare contiene %
o _
, devi utilizzare un carattere di escape in un ESCAPE
facoltativo clausola come segue:
column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)
Quando specifichi il ESCAPE
clausola, il LIKE
l'operatore valuterà l'expression
che segue ESCAPE
parola chiave a una stringa composta da un singolo carattere o un carattere di escape.
Quindi puoi utilizzare questo carattere di escape nel modello per includere il segno di percentuale letterale (%) o il carattere di sottolineatura (_
). Il LIKE
l'operatore valuta il segno di percentuale (%
) o trattino basso (_
) che segue il carattere di escape come una stringa letterale, non un carattere jolly.
Supponiamo di voler abbinare la stringa 10%
in una colonna di una tabella. Tuttavia, SQLite interpreta il simbolo di percentuale %
come carattere jolly. Pertanto, devi evitare questo simbolo di percentuale %
usando un carattere di escape:
column_1 LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
In questa espressione, il LIKE
l'operatore interpreta il primo % e l'ultimo % dei segni di percentuale come caratteri jolly e il secondo segno di percentuale come un simbolo di percentuale letterale.
Tieni presente che puoi utilizzare altri caratteri come carattere di escape, ad esempio /, @, $.
Considera il seguente esempio:
Innanzitutto, crea una tabella t
che ha una colonna:
CREATE TABLE t(
c TEXT
);
Code language: SQL (Structured Query Language) (sql)
Successivamente, inserisci alcune righe nella tabella 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)
Quindi, interroga i dati da t
tabella:
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)
In quarto luogo, prova a trovare la riga il cui valore in c
la colonna contiene il 10%
stringa letterale:
SELECT c
FROM t
WHERE c LIKE '%10%%';
Code language: SQL (Structured Query Language) (sql)
Tuttavia, restituisce righe i cui valori nella colonna c contengono 10:
c
------------------
10% increase
10 times decrease
100% vs. last year
Quinto, per ottenere il risultato corretto, usi ESCAPE
clausola come mostrato nella query seguente:
SELECT c
FROM t
WHERE c LIKE '%10\%%' ESCAPE '\';
Code language: SQL (Structured Query Language) (sql)
Ecco il set di risultati:
c
------------
10% increase
Code language: Shell Session (shell)
In questo tutorial, hai imparato a usare SQLite LIKE
operatore per interrogare i dati in base alla corrispondenza del modello utilizzando due caratteri jolly segno di percentuale (%
) e trattino basso (_
).