Ignorer un préfixage

Résolu/Fermé
Utilisateur anonyme - 9 avril 2013 à 08:30
 Utilisateur anonyme - 12 avril 2013 à 11:31
Bonjour à tous.
J'ai une petite question pour ma bdd en mysql : j'ai parfois des critères préfixés qui correspondent à des codes. par exemple mon critère préfixé "TE_code" correspond au critère "code".
Ma question est donc de savoir s'il est possible en mysql d'ignorer ce préfixage (dès qu'un critère commence par "TE_" on prend que ce qu'il y a après) de manière automatique dans un select?

merci d'avance.

naga

5 réponses

Utilisateur anonyme
10 avril 2013 à 16:47
Salut salut,

Ta question m'intéresse, je ne sais pas s'il y a d'autre moyen (si qqun en a un?) mais on peut imaginer en SQL un première requête avec un REGEX qui parcours les noms de colonne ne retourne que celle respectant la REGEX (commançant par TE_) et ensuite retourner ce que ces colonnes contiennent :
Je me suis amusé sur mysql voir si on pouvait récup les noms de colonne avec une expression régulière.
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'test'
AND (COLUMN_NAME REGEXP "^TE_.")

1
Utilisateur anonyme
12 avril 2013 à 11:19
je ne suis pas sur de bien comprendre ...
Tu souhaites récupérer des nom de colonnes et requeter par rapport à celles-ci ?
Si c'est bien ca, je ne pense pas que tu puisse le faire directement, mais il faudra passer par un langage de dev pour récupérer les valeurs et construire tes requêtes dynamiquements (car on te renvoi une chaine correspondant au nom de ta colonne, et non réellement ta colonne)
1
Utilisateur anonyme
12 avril 2013 à 11:31
Thank's ;)
0
Utilisateur anonyme
10 avril 2013 à 17:02
L'info est interessante ^^ mais ce que je cherche à faire c'est un peu l'inverse en fait :

si je fais

SELECT * FROM T_CRITERES WHERE NOM_CRITERES='TE_UNCODE'


je souhaiterai qu'il cherche le critere ayant pour nom 'UNCODE'

je sais que le principe existe dans les tables (mais j'arrive pas à mettre la main dessus nom plus), où justement tu as une requete qui appel la table T_TAB mais qu'en réalité ca interroge la table T_TAB_V2 (utilisé actuellement dans ma boite donc c'est bien qu'il y a une truc^^)

je continue de chercher de mon côté mais je suis preneur d'idées ;)
0
ah bah non en fait c'est parfais ! il me suffit de faire ma regex sur la column name et non la valeur recherché :

select * 
from JEUX 
where 'FR_COUNTER' REGEXP J_LIB 


si j'ai dans ma table deux J_LIB :

counter 
fr_counter 


ca me retoune bien les deux résultats =)
Bon par contre je pense qu'il faudra change l'expression de manière à ce que si j'ai 'COUNT' il ne ressorte pas mais je devrai m'en sortir ^^

merci
0
Utilisateur anonyme
11 avril 2013 à 09:08
bon en fait il suffit de rajouter le caractère de fin de chaine :

concat(J_LIB ,'$')
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 avril 2013 à 10:30
Haha bien ;)

Llorsque j'ai fais le bout de requête je me demandais s'il était possible dans le cas où on ferais une jointure d'utiliser le retour de la requête avec la REGEX pour les utiliser comme nom de colonne.

Par ex : la requête nous retourne TE_col1, TE_col2 :
est ce qu'il est possible de continuer la requête sql en utilisant ces retours pour faire les conditions : WHERE "premier_retour"=1 , et "premier_retour" serait TE_col1.

Je sais pas si j'ai été très clair...
0