Requete SQL pour recherce une chaine avec caractères spéciaux

Signaler
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017
-
Whismeril
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
-
Bonsoir,

comment formuler une requête SQL pour chercher un nom dans ma table SQL qui contient un tirer(-).

le gestionnaire tape par exemple dans un textBox : jean-gabin
et le nom saisie dans ma table est jean gabin (sans tirer).

merci d'avance.

6 réponses

Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365
Bonjour

Le titre mentionne des caractères spéciaux, ensuite tu dis que tu veux chercher du texte contenant un tiret et enfin qu'il n'y a pas de tiret dans ta base de données.

C'est confus.
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017

bonjour,

désolé j'ai inversé les choses, effectivement dans ma base de données le nom ne contient pas de tirer mais le nom dans le TextBox de recherche contient le tirer.

merci pour tout.
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365
Ok, si cela ne concerne que le tiret, il te suffit de faire un Replace sur le contenu du textbox.
Tu peux même éventuellement remplacer tous les caractères spéciaux par un espace avec cette méthode, ou une regex.

Et les accents, cédilles, tildes...? Si le gars tapes Hélène alors que ta base contient Helene?
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017

bonjour Whismeril,

en faite ce post est la suite de notre échanges au sujet intitulé (Recherche à partir des valeurs d'une colonne d'une DataGridView)

le problème c'est que tout les noms qui contiens un tirer(-) dans la table excel ne s'affichent pas dans ma DataGridView, pour rappel voilà le code :

'Conn est la connexion vers excel
'Conn2 est la connexion vers la base de données
Dim DTT As New System.Data.DataTable()
Dim cmd As New OleDbCommand("select * from [FICHNREG$]", Conn)
Dim dr As OleDbDataReader = cmd.ExecuteReader()
DTT.Load(dr)

Dim dt2 As New DataTable()
For Each r As DataRow In DTT.Rows
Dim SDA1 As New SqlDataAdapter("SELECT Num_Salarié,Nom_Salarié from employes Where Ref_Art='" & r.Field(Of String)("Nom") & "'", Conn2) 'pour le nom du Field j'ai psupposé que ta colonne Excel s'appelle Nom
SDA1.Fill(dt2)

Next r
dataGridView1.DataSource = dt2
Whismeril
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365
C'est pareil, tu fais le replace sur r.Field(Of String)("Nom")
walidbebe
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017
> Whismeril
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020

bonjour,

où je dois mettre le replace
Whismeril
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365 > walidbebe
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017

As tu lu l'aide en ligne que je t'ai mis en lien plus haut?
Qu'en as tu compris?

Je veux bien t'aider pour les trucs complexes, mais quand il s'agit des bases du langage, il serait bien pour toi d'y arriver seul.
walidbebe
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017
> Whismeril
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020

est ce que la méthode LIKE peut servir à quelque chose dans ce cas ?
Messages postés
13
Date d'inscription
mardi 18 juillet 2017
Statut
Membre
Dernière intervention
29 juillet 2017

bonjour,

de toute façon merci beaucoup pour l'aide que vous m'avez porté.
Messages postés
14425
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365
Bonjour,

oui like peut éventuellement servir

Cas 1
tu es sûr qu'il n'y a pas de tiret dans la base de données, mais des espaces => tu remplaces le tiret par un espace et tu utilises where
Dim texteExemple as string = "Jean-Charles"
Dim texteAChercher = texteExemple.Replace("-"," ")
Dim SDA1 As New SqlDataAdapter("SELECT Num_Salarié,Nom_Salarié from employes  Where Ref_Art='" & texteAChercher & "'", Conn2)


Ce qui peut aussi s'écrire sur une seule ligne
Dim SDA1 As New SqlDataAdapter("SELECT Num_Salarié,Nom_Salarié from employes  Where Ref_Art='" & "Jean-Charles".Replace("-"," ") & "'", Conn2)


Cas 2
tu ne sais pas trop s'il y a des espace ou des tirets, le symbole "joker" dans le like de sql est _, il faut donc remplacer les tirets et les espaces par ce caractère
Dim SDA1 As New SqlDataAdapter("SELECT Num_Salarié,Nom_Salarié from employes  Where Like='" & "Jean-Charles Rémi".Replace("-","_").Replace(" ","_") & "'", Conn2)


Si tu veux remplacer plein de caractères différents (que ce soit par espace ou _), il devient rapidement plus simple de le faire avec une regex qu'avec une succession de Replace.