mySQL sous-CHAÎNE avec plusieurs conditions dans la clause where
J'ai cette requête:
SELECT DISTINCT phone, department
FROM `users`
WHERE ((SUBSTRING(phone,1,3) = '399')
AND (SUBSTRING(phone,5,4) BETWEEN '3400' AND '3499')
OR (SUBSTRING(phone,1,3) = '244')
AND (SUBSTRING (phone,5,4) BETWEEN '5400' AND '5499'))
que me donne cette erreur:
#1630 - FUNCTION Database.SUBSTRING does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
La requête fonctionne si je n'utilise ceci:
SELECT DISTINCT phone, department
FROM `users`
WHERE (SUBSTRING(phone,1,3) = '399')
AND (SUBSTRING(phone,5,4) BETWEEN '3400' AND '3499')
Vous devez vous connecter pour publier un commentaire.
Selon le MySQL Nom De La Fonction D'Analyse il doit y avoir aucun espace entre le haut-nom de la fonction ('CHAÎNE' dans votre cas) et le suivant “(” parenthèse de caractère. C'est un défaut analyseur le comportement de distinguer si les noms de fonctions sont utilisés comme des appels de fonction ou d'identifiants dans nonexpression contexte.
Donc, si vous supprimer l'espace blanc après "sous-CHAÎNE' appel de fonction dans la dernière ligne, votre requête sera beau travail:
Vous ne pouvez pas avoir un espace entre la sous-CHAÎNE et de la (. Il y a une db option qui permet, si vous le voulez vraiment.
Vous avez un espace supplémentaire dans la clause finale:
de le supprimer, et la totalité de la requête fonctionne.