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

walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention - 28 juil. 2017 à 01:35 - Dernière réponse : Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention
- 29 juil. 2017 à 12:32
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.
Afficher la suite 

10 réponses

Répondre au sujet
Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 28 juil. 2017 à 07:17
0
Utile
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.
Commenter la réponse de Whismeril
walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention - 28 juil. 2017 à 10:29
0
Utile
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.
Commenter la réponse de walidbebe
Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 28 juil. 2017 à 11:47
0
Utile
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?
Commenter la réponse de Whismeril
walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention - 28 juil. 2017 à 16:27
0
Utile
4
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 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 28 juil. 2017 à 16:43
C'est pareil, tu fais le replace sur r.Field(Of String)("Nom")
walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention > Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 28 juil. 2017 à 16:57
bonjour,

où je dois mettre le replace
Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention > walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention - 28 juil. 2017 à 17:52
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 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention > Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 28 juil. 2017 à 17:51
est ce que la méthode LIKE peut servir à quelque chose dans ce cas ?
Commenter la réponse de walidbebe
walidbebe 13 Messages postés mardi 18 juillet 2017Date d'inscription 29 juillet 2017 Dernière intervention - 29 juil. 2017 à 11:35
0
Utile
bonjour,

de toute façon merci beaucoup pour l'aide que vous m'avez porté.
Commenter la réponse de walidbebe
Whismeril 10542 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 29 juil. 2017 à 12:32
0
Utile
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.


Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.