2009-09-01 4 views
0
Will the following query evaluate to true (1), false (0), or NULL? 

SELECT '%' LIKE ' % '; 

la réponse fournie estcomparaisons MySQL et '%'

The '%' character is matched by '%', but not by the space characters surrounding it, so the expression evaluates to false. 

+----------------+ 
| '%' LIKE ' % ' | 
+----------------+ 
|   0 | 
+----------------+ 

mais je pensais% peut correspondre à zéro ou plus caractères? alors% peut correspondre à% + Spaces? ou est-ce que les caractères n'incluent pas les caractères génériques?

MISE À JOUR:

oh mais si la comparaison s'Arnd dans l'autre sens, il est vrai ... hmm ...

SELECT ' % ' LIKE '%';
Any non-NULL string is matched by the '%' metacharacter, so the expression evaluates to true. 

+----------------+ 
| ' % ' LIKE '%' | 
+----------------+ 
|   1 | 
+----------------+ 

Répondre

2

Logic est faux. Il fallait écrire

select ' % ' like '%' 

Si vous écrivez comme « % », cela signifie que dans la première chaîne doit être l'espace, puis tous les symboles et un espace de plus à la fin. Les caractères génériques sont pour une déclaration similaire, dans la première chaîne ce n'est pas un joker mais un symbole.

0

Pas tout à fait sûr de ce que votre question est, mais par exemple le temps:

table échantillon, mytbl:

col1 
---- 
abc 
def 
feh 
zba 
a b 

Query1 
------ 
select * from mytbl where col1 like '%b%' 

Result1 
------- 
abc 
zba 
a b 

Query2 
------ 
select * from mytbl where col1 like '%b' 

Result2 
------ 
a b 

Query3 
------ 
select * from mytbl where col1 like 'a%' 

Result3 
------- 
abc 
a b 

Query4 
------ 
select * from mytbl where col1 like '% b%' 

Result4 
------- 
a b 

Query5 
------ 
select * from mytbl where col1 like '% b %' 

Result5 
------- 
null 

Comme vous pouvez le voir, les % correspond à zéro ou plusieurs caractères. Les caractères non % sont traités comme des littéraux. Cela signifie que % b % recherche anything + space + b + space + anything.

Heureusement, cela aide.