sql >> Database teknologi >  >> RDS >> SQLite

SQLite LIKE

Oversigt :i denne øvelse lærer du, hvordan du forespørger data baseret på mønstermatchning ved hjælp af SQLite LIKE operatør.

Introduktion til SQLite LIKE operatør

Nogle gange kender du ikke nøjagtigt det komplette søgeord, du vil forespørge på. For eksempel ved du måske, at din mest yndlingssang indeholder ordetelevator men du kender ikke lige navnet.

For at forespørge data baseret på delvise oplysninger, bruger du LIKE operator i WHERE klausul af SELECT erklæring som følger:

SELECT
	column_list
FROM
	table_name
WHERE
	column_1 LIKE pattern;Code language: SQL (Structured Query Language) (sql)

Bemærk, at du også kan bruge LIKE operator i WHERE klausul i andre udsagn, såsom DELETE og UPDATE .

SQLite giver to jokertegn til at konstruere mønstre. De er procenttegn % og understreg _ :

  1. Procenttegnet % jokertegn matcher enhver sekvens på nul eller flere tegn.
  2. Understregningen _ jokertegn matcher ethvert enkelt tegn.

Procenttegnet % eksempler på jokertegn

s% mønster, der bruger jokertegnet for procenttegn ( % ) matcher enhver streng, der starter med s f.eks. son og so .

%er mønster matcher enhver streng, der ender med er som peter , clever osv.

Og %per% mønster matcher enhver streng, der indeholder per såsom percent og peeper .

Understregningen _ eksempler på jokertegn

h_nt mønster matcher hunt , hint osv. __pple mønster matcher topple , supple , tipple , etc.
Bemærk at SQLite LIKE operatøren skelner mellem store og små bogstaver. Det betyder "A" LIKE "a" er sandt.

For Unicode-tegn, der ikke er i ASCII-intervallerne, er LIKE operatoren skelner mellem store og små bogstaver, f.eks. "Ä" LIKE "ä" er falsk.
Hvis du vil lave LIKE operatøren fungerer case-sensitive, du skal bruge følgende PRAGMA:

PRAGMA case_sensitive_like = true;Code language: SQL (Structured Query Language) (sql)

SQLite LIKE eksempler

Vi bruger tabellen tracks i prøvedatabasen til demonstrationen.

For at finde de spor, hvis navne starter med Wild bogstavelig streng, bruger du procenttegnet % jokertegn i slutningen af ​​mønsteret.

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE 'Wild%'Code language: SQL (Structured Query Language) (sql)

Prøv det

For at finde de spor, hvis navne slutter med Wild ord, bruger du % jokertegn i begyndelsen af ​​mønsteret.

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Wild'Code language: SQL (Structured Query Language) (sql)

Prøv det

For at finde de spor, hvis navne indeholder Wild bogstavelig streng, bruger du % jokertegn i begyndelsen og slutningen af ​​mønsteret:

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE '%Wild%';Code language: SQL (Structured Query Language) (sql)

Prøv det

Følgende sætning finder de spor, hvis navne indeholder:nul eller flere tegn (% ), efterfulgt af Br , efterfulgt af et tegn ( _ ), efterfulgt af wn , og efterfulgt af nul eller flere tegn ( % ).

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Br_wn%';Code language: SQL (Structured Query Language) (sql)

Prøv det

SQLite LIKE med ESCAPE klausul

Hvis det mønster, du vil matche, indeholder % eller _ , skal du bruge et escape-tegn i en valgfri ESCAPE klausul som følger:

column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)

Når du angiver ESCAPE klausulen, LIKE operatør vil evaluere expression der følger ESCAPE nøgleord til en streng, der består af et enkelt tegn, eller et escape-tegn.

Så kan du bruge dette escape-tegn i mønsteret til at inkludere bogstaveligt procenttegn (%) eller understregning (_ ). LIKE operatoren evaluerer procenttegnet (% ) eller understregning (_ ), der følger escape-tegnet som en bogstavelig streng, ikke et jokertegn.

Antag, at du vil matche strengen 10% i en kolonne i en tabel. SQLite fortolker dog procentsymbolet % som jokertegn. Derfor skal du undslippe dette procentsymbol % ved hjælp af et escape-tegn:

column_1 LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

I dette udtryk er LIKE operatoren fortolker det første % og sidste % procenttegn som jokertegn og det andet procenttegn som et bogstaveligt procentsymbol.

Bemærk, at du kan bruge andre tegn som escape-tegn, f.eks. /, @, $.

Overvej følgende eksempel:

Først skal du oprette en tabel t der har én kolonne:

CREATE TABLE t(
	c TEXT
);Code language: SQL (Structured Query Language) (sql)

Indsæt derefter nogle rækker i tabellen 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)

Forespørg derefter data fra t tabel:

SELECT * FROM t;Code language: SQL (Structured Query Language) (sql)
c                     
----------------------
10% increase          
10 times decrease     
100% vs. last year    
20% increase next yearCode language: Shell Session (shell)

For det fjerde, forsøg at finde den række, hvis værdi i c kolonnen indeholder 10% bogstavelig streng:

SELECT c 
FROM t 
WHERE c LIKE '%10%%';Code language: SQL (Structured Query Language) (sql)

Det returnerer dog rækker, hvis værdier i c-kolonnen indeholder 10:

c                 
------------------
10% increase      
10 times decrease 
100% vs. last year

For det femte, for at få det korrekte resultat, bruger du ESCAPE klausul som vist i følgende forespørgsel:

SELECT c 
FROM t 
WHERE c LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

Her er resultatsættet:

c           
------------
10% increaseCode language: Shell Session (shell)

I denne øvelse har du lært, hvordan du bruger SQLite LIKE operatør til at forespørge data baseret på mønstermatchning ved hjælp af to jokertegn procenttegn (% ) og understregning (_ ).


  1. Simpel Postgresql-erklæring - kolonnenavn findes ikke

  2. Hvordan nulstiller jeg en sekvens i Oracle?

  3. PLSQL :NY og :GAMMEL

  4. Ubesvarede spørgsmål om MS SQL Server-sikkerhed og adgangskontrol