Je pensais qu'en ajoutant simplement AND à la clause WHERE, je pouvais ajouter à l'infini des conditions tant que les colonnes sélectionnées correspondent à la clause WHERE. Cependant, la requête suivante :
Aucune signature correspondante pour l'opérateur AND pour les types d'argument : BOOL, BOOL, STRING. Signature prise en charge: BOOL AND ([BOOL,...]) à [8:3]
SELECT
DISTINCT state,
country,
city
FROM
customer_data.customer_address
WHERE
TRIM(state) = 'OH'
AND LENGTH(country) > 2
AND SUBSTR(city,1,5)
Si je devais supprimer la dernière ligne, aucune erreur ne s'affiche et je peux exécuter la requête, mais pourquoi l'ajout d'une autre condition renverrait-il une telle erreur ?
Solution du problème
Oui, vous pouvez combiner autant d'opérations logiques avec la WHERE
clause mais, Your SUBSTR
renvoie une chaîne, vous devez donc la comparer avec quelque chose, SQL Server dans mon cas essaie d'agir comme `Bool donc il affichera le message d'erreur signifiant que le résultat est non booléen, mais non booléen:
Msg 4145, niveau 15, état 1, ligne 13 Une expression de type non booléen spécifiée dans un contexte où une condition est attendue, proche de ')'.
pour le réparer, vous devez le comparer avec quelque chose, disons que la chaîne de retour est égale à 'abcde'
voici ma requête en utilisant SQL Server:
SELECT
DISTINCT state,
country,
city
FROM
tbl_Test2
WHERE
TRIM(state) = 'OH'
AND LEN(country) > 2
AND SUBSTRING(city,1,5) = 'abcde'
Aucun commentaire:
Enregistrer un commentaire