1
votes

Vérification si la chaîne a une requête SQL de lettre E (insensible à la casse) en utilisant une condition WHERE

Je m'entraîne sur un site Web, où ils me demandent d'afficher une liste de joueurs avec un «e» ou un «E» dans leur nom en utilisant une seule condition WHERE.

Ma requête montre le même résultat que ce qui est attendue, mais le site Web dit "J'ai fait quelque chose qui n'est pas correct ou le résultat est incomplet".

Mon instruction WHERE compte-t-elle comme une condition? Existe-t-il un moyen de ne pas respecter la casse uniquement après le LIKE?

SELECT DISTINCT s.spelersnr, voorletters || ' ' || naam AS spelersnaam
FROM spelers s INNER JOIN wedstrijden w
     ON s.spelersnr = w.spelersnr

WHERE LOWER(naam) LIKE '%e%'

ORDER BY s.spelersnr ASC


2 commentaires

Quel est votre dbms?


@ D-Shih im utilisant pgAdmin et sql dropbox, je pense que postgreSQL


4 Réponses :


2
votes

En supposant que votre base de données prend en charge une fonction LOWER , alors votre clause WHERE actuelle semble déjà être une condition:

WHERE naam ~* '.*e.*'

Dans Postgres, vous pouvez également écrire ceci en utilisant SIMILAR TO :

WHERE naam SIMILAR TO '%(e|E)%'

Ou, vous pouvez utiliser une expression régulière POSIX:

WHERE LOWER(naam) LIKE '%e%'


1 commentaires

Ce sont deux nouvelles façons que je ne connaissais pas, merci.



1
votes

comme vous l'avez mentionné, c'est postgres db, utiliser des éléments similaires ou similaires vous aidera. une explication détaillée est dans le lien ci-dessous https: //dba.stackexchange. com / questions / 10694 / correspondance-de-modèle-avec-des-expressions-similaires-similaires-ou-régulières-dans-postgresql


0 commentaires

1
votes

cela fonctionnera:

SELECT DISTINCT s.spelersnr, voorletters || ' ' || naam AS spelersnaam
FROM spelers s INNER JOIN wedstrijden w
     ON s.spelersnr = w.spelersnr

WHERE  REGEXP_LIKE (naam, '(.)*e(.)*', 'i')

ORDER BY s.spelersnr ASC


0 commentaires

1
votes

Le moyen le plus simple est d'utiliser ILIKE:

WHERE naam ILIKE '%e%'

Il s'agit d'un opérateur Postgres intégré qui effectue une correspondance insensible à la casse. Ceci est expliqué dans la documentation .

p >


0 commentaires