Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQL : Combiner IN et LIKE?!?!

6 réponses
Avatar
thomthom63
Bonjour tout le monde,


Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requ=EAte faire la s=E9lection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

H=E9las, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journ=E9e,

Thomas

6 réponses

Avatar
Michel_D
Bonjour,

La requête suivante devrait donner ce que tu veux :

SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));


"thomthom63" a écrit dans le message de news:
Bonjour tout le monde,


Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas
Avatar
thomthom63
Merci Michel,

Ce n'est pas vraiment ce que je voulais savoir. En fait je reprend un
programme existant qui utilise l'instruction IN. Une fonction
construit la liste des valeur à inclure dans la requête à partir d'une
table de paramètrage.

Un nouveau besoin a été formuler afin de pouvoir inclure des
expression régulières dans les paramètres.

Afin de ne pas trop modifier la structure du programme, je ne veux pas
passer par un LIKE, mais plutôt par quelque chose qui rescemble à un
IN. Si celà n'existe pas je devrais alors revoir la construction du
prédicat de ma requête de la façon que tu as précisé.

Merci pour ta réponse,

Thomas




On 13 nov, 13:37, "Michel_D"
wrote:
Bonjour,

La requête suivante devrait donner ce que tu veux :

SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));

"thomthom63" a écrit dans le message dene ws:
Bonjour tout le monde,

Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas


Avatar
Michel_D
Donne ta requête car ce qui compte c'est ce que renvoie ta requête et
pas comment elle est écrite.


"thomthom63" a écrit dans le message de news:
Merci Michel,

Ce n'est pas vraiment ce que je voulais savoir. En fait je reprend un
programme existant qui utilise l'instruction IN. Une fonction
construit la liste des valeur à inclure dans la requête à partir d'une
table de paramètrage.

Un nouveau besoin a été formuler afin de pouvoir inclure des
expression régulières dans les paramètres.

Afin de ne pas trop modifier la structure du programme, je ne veux pas
passer par un LIKE, mais plutôt par quelque chose qui rescemble à un
IN. Si celà n'existe pas je devrais alors revoir la construction du
prédicat de ma requête de la façon que tu as précisé.

Merci pour ta réponse,

Thomas




On 13 nov, 13:37, "Michel_D"
wrote:
Bonjour,

La requête suivante devrait donner ce que tu veux :

SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));

"thomthom63" a écrit dans le message denews:
Bonjour tout le monde,

Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas


Avatar
thomthom63
On 13 nov, 14:39, "Michel_D"
wrote:
Donne ta requête car ce qui compte c'est ce que renvoie ta requête et
pas comment elle est écrite.

"thomthom63" a écrit dans le message dene ws:
Merci Michel,

Ce n'est pas vraiment ce que je voulais savoir. En fait je reprend un
programme existant qui utilise l'instruction IN. Une fonction
construit la liste des valeur à inclure dans la requête à partir d' une
table de paramètrage.

Un nouveau besoin a été formuler afin de pouvoir inclure des
expression régulières dans les paramètres.

Afin de ne pas trop modifier la structure du programme, je ne veux pas
passer par un LIKE, mais plutôt par quelque chose qui rescemble à un
IN. Si celà n'existe pas je devrais alors revoir la construction du
prédicat de ma requête de la façon que tu as précisé.

Merci pour ta réponse,

Thomas

On 13 nov, 13:37, "Michel_D"
wrote:



Bonjour,

La requête suivante devrait donner ce que tu veux :

SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));

"thomthom63" a écrit dans le message de news:
Bonjour tout le monde,

Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Pour le moment ma requête rescemble à ça:
SELECT *
FROM [T_ARTCLES]
WHERE [ART_ID] IN ('A1",'A2','C1');

La partie IN est écrit dans par une fonction qui va lire dans une
table les valeurs à inclure dans le WHERE.
Je passerais bien par un fonction LIKE, mais j'ai peur pour les
performances de la requête. Le temps d'exécution de la requête de
production est très important.


Avatar
Michel_D
"thomthom63" a écrit dans le message de news:
On 13 nov, 14:39, "Michel_D"
wrote:
Bonjour,
La requête suivante devrait donner ce que tu veux :
SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));

"thomthom63" a écrit dans le message
denews:


Bonjour tout le monde,

Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Pour le moment ma requête rescemble à ça:
SELECT *
FROM [T_ARTCLES]
WHERE [ART_ID] IN ('A1",'A2','C1');

La partie IN est écrit dans par une fonction qui va lire dans une
table les valeurs à inclure dans le WHERE.
Je passerais bien par un fonction LIKE, mais j'ai peur pour les
performances de la requête. Le temps d'exécution de la requête de
production est très important.

------------------------------------------

Dés l'instant que l'on a affaire à du texte c'est théoriquement
l'opérateur like qu'il faut employer, je te propose une autre variante
de la requête avec like qui sera peut-être plus simple à construire.

SELECT *
FROM [T_ARTCLES]
WHERE ([ART_ID] Like "[A,C]*");


Avatar
thomthom63
On 13 nov, 15:11, "Michel_D"
wrote:
"thomthom63" a écrit dans le message dene ws:
On 13 nov, 14:39, "Michel_D"
wrote:> > Bonjour,
La requête suivante devrait donner ce que tu veux :
SELECT *
FROM [T_ARTCLES]
WHERE (([ART_LIB] Like "A*") Or ([ART_LIB] Like "C*"));

"thomthom63" a écrit dans le message



denews:





Bonjour tout le monde,

Soit la table T_ARTCLES suivante

ART_ID ART_LIB
A1 AAAA
A2 AAAA
B1 BBBB
B2 BBBB
C1 CCCC
etc...

J'aimerais dans une requête faire la sélection des article dont
l'identifiant commence par "A*" ou par "C*" et cela, sans utiliser de
LIKE.

Hélas, il cela n'est pas possible avec IN ('A*','C*'). Existe-t'il un
moyen en SQL de combiner les instruction IN et LIKE?

Merci et bonne journée,

Thomas- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Pour le moment ma requête rescemble à ça:
SELECT *
FROM [T_ARTCLES]
WHERE [ART_ID] IN ('A1",'A2','C1');

La partie IN est écrit dans par une fonction qui va lire dans une
table les valeurs à inclure dans le WHERE.
Je passerais bien par un fonction LIKE, mais j'ai peur pour les
performances de la requête. Le temps d'exécution de la requête de
production est très important.

------------------------------------------

Dés l'instant que l'on a affaire à du texte c'est théoriquement
l'opérateur like qu'il faut employer, je te propose une autre variante
de la requête avec like qui sera peut-être plus simple à construir e.

SELECT *
FROM [T_ARTCLES]
WHERE ([ART_ID] Like "[A,C]*");- Masquer le texte des messages précéd ents -

- Afficher le texte des messages précédents -


cette syntaxe m'a l'air pas mal, je vais étudier la question de plus
prêt.

Merci!