Version complète: sur le forum Webmaster Hub : Recherche dans une chaine de caractère
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
DuR0
Bonjour,
Je vais simplifier la requête afin de ne pas embrouiller tout le monde.
En bref j'ai un champ "lecture_sujet_forum" dans ma table qui contient ce genre d'information :

0-14-25-5-157-2-6
0-5-2-3-444-58-69
...

Les numéro sont unique. J'aimerai savoir si un numero ce trouve dans cette liste.

Comment faire? (Je voudrai rester dans la norme, mais si on ne peut pas j'utilise SQL Server 2005)

Merci d'avance!
froidure_nicolas
Un truc comme ça :
SELECT * FROM ma_table WHERE lecture_sujet_forum LIKE(%(ID)%);
Je vérifie demain et je reviens si nécessaire.
captain_torche
Ca ne marcherait malheureusement pas : une recherche du sujet 44 retournerait ledit sujet, mais également toutes les variantes contentant la chaîne 44 : 144, 2445, etc ...
Portekoi
Bonjour,

Pourquoi faire compliqué?

SQL
SELECT * FROM ma_table WHERE '-' + lecture_sujet_forum like '%-(id)-%';



Portekoi
captain_torche
Heu ... parce que dans ce cas, les premier et dernier éléments de la chaîne seront ignorés ?

Il faudrait éventuellement voir avec une expression régulière.
Portekoi
Ben non pourquoi?

SQL
SELECT * FROM ma_table WHERE '-' + lecture_sujet_forum + '-' like '%-(id)-%';


Suffit de mettre le '-' devant et derrière le champs recherché non?
captain_torche
Woops, j'avais pas fait gaffe wink.gif
DuR0
Il reste un soucis. Les type ne sont pas du tout compatible...

'-' ! varchar pour SQL server et lecture_sujet_forum est du text... Comment faire pour les concaténer?
Portekoi
Bonjour,

Essaie avec un convert(varchar(6000), lecture_sujet_forum).

Je ne me souviens plus de la syntaxe d'un convert avec mysql sad.gif


Portekoi
DuR0
Merci Portekoi, ta fonction... fonctionne a_thumbsup_20.gif

Mais malheureusement ma requête donne des résultats assez farfelu

Voila le SQL :

CODE
SQLe = "Select * FROM SelSCatForum Where id_scat_f = " & RSs.fields("id_scat_f") & " AND EXISTS (Select * from SelSujetForum Where id_scat_f = SelSCatForum.id_scat_f AND '-' + convert(varchar(6000), lecture_sujet_f) + '-' like '%-" & Session("id_m") & "-%')"


Explication :
J'aimerai savoir pour une catégorie donnée (RSs.fields("id_scat_f")) s'il existe un sujet que le membre (Session("id_m")) n'a pas encore lu, cad dont l'id membre ne se trouve pas dans la chaine de caractère "lecture_sujet_f".

Après avoir fait cette requête :
* Si elle renvoit 0 resultat c'est que le membre -> pas de nv sujet
* Si elle renvoit >0 ->nv sujet
DuR0
Résolu :
* Pourquoi est ce que j'utilisais exist alors que je n'avais que 1 resultat dans la requête externe
* Pour savoir s'il y a un nouveau sujet il faut savoir si le nombre de resultat de la requete audessu est inférieur au nombre total de résultat.

Voilà biggrin.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.