Pour une raison quelconque, cela ne fonctionne pas:
select substring(rating, instr(rating,',') +1, +2) as val
from users where val = '15';
Cela donne cette erreur:
ERREUR 1054 (42S22): colonne inconnue 'val' dans 'où clause'
Comment puis-je le faire alors?
Tout d'abord, vous ne pouvez pas utiliser ALIAS
sur la clause WHERE
. Vous devriez utiliser la colonne,
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'
La raison est la suivante: l'ordre des opérations est SQL,
la ALIAS
a lieu sur la clause SELECT
qui est avant la clause WHERE
.
si vous voulez vraiment utiliser le pseudonyme, enveloppez-le dans une sous-requête,
SELECT *
FROM
(
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
) s
WHERE val = '15'
val
n'est pas défini, c'est juste un alias. Fais-le comme ça:
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = 15
Vous pouvez utiliser cette requête
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2)
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'