Wat is het verschil tussen “LIKE” en “=” in SQL?

Is er een verschil tussen:

SELECT * FROM users WHERE username="davyjones"

en

SELECT * FROM users WHERE username LIKE "davyjones"

Antwoord 1, autoriteit 100%

LIKEstaat gedeeltelijke overeenkomsten / gebruik van jokertekens toe, terwijl =controleert op exacte overeenkomsten.

Bijvoorbeeld

SELECT * FROM test WHERE field LIKE '%oom';

Retourneert rijen waarin de veldwaarde een van de volgende is:

Zoom, Boom, Loom, Groom

Antwoord 2, autoriteit 83%

Volgens de SQL-standaard is het verschil de behandeling van witruimte aan het einde in CHAR-kolommen. Voorbeeld:

create table t1 ( c10 char(10) );
insert into t1 values ('davyjones');
select * from t1 where c10 = 'davyjones';
-- yields 1 row
select * from t1 where c10 like 'davyjones';
-- yields 0 rows

Natuurlijk, ervan uitgaande dat u dit uitvoert op een standaard-compliant DBMS. Trouwens, dit is een van de belangrijkste verschillen tussen CHAR’s en VARCHAR’s.


Antwoord 3, autoriteit 26%

In dat geval is er geen verschil dat in de resultaten naar voren komt. Het gebruikt echter een andere methode voor vergelijking en de “LIKE” zou veel langzamer zijn.

Bekijk dit voor voorbeelden van LIKE: http://www.techonthenet.com/sql /like.php

In dit geval wil je toch de gelijken gebruiken.

Update: Merk op dat er een cruciaal verschil is als het gaat om CHAR-type kolommen waarin de resultaten zalanders zijn. Zie dit antwoordvoor meer details. Bij gebruik van VARCHAR (vermoedelijk de norm), zijn de bovenstaande equivalenten en hebben gelijken de voorkeur.


Antwoord 4, autoriteit 9%

LIKEstaat jokertekens toe zoals %(een willekeurig aantal tekens hier) en _(één teken hier).

SELECT * FROM users WHERE username LIKE 'joe%'

Selecteert alle gebruikersnamen die beginnen met joe.


Antwoord 5, autoriteit 9%

create table A (id int,name varchar(30))
insert into A values(4,'subhash')

Gebruik de volgende witruimte om in het naamveld te zoeken:

select * from A where name='Subhash '
--Yields 1 row
select * from A where name like 'Subhash '
--Yields 0 row

Antwoord 6, autoriteit 7%

LIKE zoekt naar een patroon.

/* Returns all users whose username starts with "d" */
SELECT * FROM users WHERE username LIKE 'd%'
/* Returns all users whose username contains "dav" */
SELECT * FROM users WHERE username LIKE '%dav%'

Antwoord 7, autoriteit 4%

Dat geeft hetzelfde resultaat. LIKE staat echter jokertekens toe, bijvoorbeeld…

SELECT * FROM users WHERE username LIKE 'davy%'

Het enige syntaxisprobleem waren dubbele aanhalingstekens in plaats van enkele aanhalingstekens


Antwoord 8, autoriteit 2%

LIKEondersteunt wildcards. Meestal gebruikt het het teken % of _ voor het jokerteken.

Het gebruik van de LIKE-operator zonder jokertekens is hetzelfde als het gebruik van de =-operator.


Antwoord 9, autoriteit 2%

Met de voorwaarde LIKEkunt u jokertekens gebruiken:

SELECT * FROM suppliers
WHERE supplier_name like 'Hew%';

zie meer voorbeelden.

en gelijk aan =wordt gebruikt voor gelijkheidsvergelijking.


Antwoord 10, Autoriteit 2%

Like is Pattern Matching Operator en =is Exact Matching-operator. d.w.z. waarnaam als W%het betekent beginnen met Wen daarna een of meer tekens
en =I.E. WIEL NAME ='James'Dit is exact overeenkomen


Antwoord 11

is gelijk aan '='is alleen voor gelijkheid. Aan de andere kant, LIKEondersteunt SQL Wildcard-matching.

Dus, met LIKEU kunt doen name like '%jones'om alle namen die eindigen in Jones te krijgen. Met LIKEis de Percentage '%'tekens iets, lengte nul of meer, en het onderstrepingsteken, '_', is er een karakter.


Antwoord 12

Voor zover ik weet, is er geen verschil, maar een tijdkosten voor de twee selecties die u schreef. Meestal gebruikt men LIKEsamen met %, wat betekent ‘elke string’. Ik denk dat er ook een personage is dat kan worden gebruikt met LIKEvoor ‘elk teken’, niet zeker wat dat is zonder Googling.

Maar als uw twee selecteert, is het enige verschil dat ik zie een andere runtime is, omdat LIKEwordt gebruikt in een regexp-sort-of-fashion.


Antwoord 13

LikeBrengt u aan het werk met Wild Card-operators, u kunt het in uw geval gebruiken voor like 'davyjon%'om alle resultaten te krijgen met davyjon, en om precies te krijgen, kunt u 'davyjones'plaatsen en u kunt ook =in dit geval gebruiken

Other episodes