PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → SQL identifier le type de rubrique pour encadrer ou pas une variable avec des apostrophes
SQL identifier le type de rubrique pour encadrer ou pas une variable avec des apostrophes
Iniciado por damien.defeux, 25,mar. 2019 10:54 - 6 respuestas
Publicado el 25,marzo 2019 - 10:54
Bonjour,

En faisant une requête SQL avec WHERE, comment savoir le type de la rubrique sur laquelle je fais ma recherche ?

C'est pour encadrer ou pas ma variable avec des apostrophes.

Exemple comment choisir quelle requête prendre en fonction du type de MaRubrique :

Var_MaRubrique est une chaine = "12"

"SELECT * FROM MonFichier WHERE MaRubrique ='" + Var_MaRubrique + "'"

OU

"SELECT * FROM MonFichier WHERE MaRubrique =" + val(Var_MaRubrique)
Miembro registrado
299 mensajes
Publicado el 25,marzo 2019 - 12:04
"SELECT * FROM MonFichier WHERE MaRubrique =" + val(Var_MaRubrique) est erroné, vous concaténez une String avec un entier.
Il faut fournir une chaine interprêtable donc "SELECT * FROM MonFichier WHERE MaRubrique =" + Var_MaRubrique

En ce qui concerne les ' en principe on connaît le type des données que l'on manipule.
Certains moteurs de base de données acceptent les côtes même pour des champs numériques
Enfin pensez à doubler les côtes dans les chaines alpha

SELECT * FROM MonFichier WHERE MaRubrique ='D'Artagnan' doit être écrit SELECT * FROM MonFichier WHERE MaRubrique ='D''Artagnan'

Ce qui donne en syntaxe
"SELECT * FROM MonFichier WHERE MaRubrique ='" + Remplace(Var_MaRubrique, "'", "''") + "' "
Miembro registrado
948 mensajes
Publicado el 25,marzo 2019 - 15:26
Bonjour
Quelle type de base de donnée HF, MySQL, Oracle, PostgreSQL ?
Publicado el 27,marzo 2019 - 11:30
En général c'est du HF mais parfois du Oracle ou SQLServer.

Les bases de données ne sont pas les miennes et peuvent changer avec le temps, je travaille en dynamique. Du coup je cherche une solution pour mes requêtes.

Car rechercher la valeur .07854 dans une colonne texte ou numérique n'est pas pareil. En effet avec des ' cela fonctionne sans erreur, mais si je fais :

select * from MonFichier Where MaRubrique = '.07854' avec MaRubrique étant un numérique je vais récupérer les lignes avec 0 dans MaRubrique ce qui ne sera pas le cas si MaRubrique est du texte, ni je fais :

select * from MonFichier Where MaRubrique = .07854
Publicado el 27,marzo 2019 - 14:53
HListeRubriques si tu gères ton analyse depuis Windev
Ensuite : Type=T ou Type=N
Publicado el 27,marzo 2019 - 15:17
Le plus simple semble être d'utiliser une requête paramétrée.

sdReq est une requete SQL = [
SELECT * FROM MonFichier WHERE MaRubrique = {pValCherche}
]

sdReq.pValCherche=12
HExecuteRequete(sdReq)