[SQL] Ne pas prendre les alphanumériques ?
Kopros
Messages postés
631
Statut
Membre
-
vordano Messages postés 1981 Statut Membre -
vordano Messages postés 1981 Statut Membre -
Salut à tous !
J'ai encore un soucis pour faire une regExp (c'est le truc je crois que je vais jamais y arriver...)
Mon champ MySQL est de type VARCHAR. Je cherche à faire une requête qui ne me retourne que les caractères numériques de ce champ. Un peu comme si je faisais en php ereg_replace("[^0-9]","",$chaine); sauf que ce serait pas avec une variable mais avec une requête SQL ^^
Par exemple si le champ contient :
blablabla 01.23.45.67.89 blabla
je voudrais que le résultat de la requête soit :
0123456789
C'est possible ou pas ?
J'ai encore un soucis pour faire une regExp (c'est le truc je crois que je vais jamais y arriver...)
Mon champ MySQL est de type VARCHAR. Je cherche à faire une requête qui ne me retourne que les caractères numériques de ce champ. Un peu comme si je faisais en php ereg_replace("[^0-9]","",$chaine); sauf que ce serait pas avec une variable mais avec une requête SQL ^^
Par exemple si le champ contient :
blablabla 01.23.45.67.89 blabla
je voudrais que le résultat de la requête soit :
0123456789
C'est possible ou pas ?
A voir également:
- [SQL] Ne pas prendre les alphanumériques ?
- Prendre photo avec webcam - Guide
- Prendre une photo avec son mac - Guide
- Comment prendre une capture d'écran sur samsung - Guide
- Logiciel sql - Télécharger - Bases de données
- Prendre mesure avec telephone - Guide
3 réponses
tu recupere le nombre de caractere puis tu incremente avec la boucle for
je ne peut t'en dire plus
je ne peut t'en dire plus
Kopros
Messages postés
631
Statut
Membre
89
Justement le but c'est d'éviter d'alourdir le code avec une boucle. D'ailleurs si j'avais voulu faire ça j'aurais utilisé un foreach et non une boucle for.
salut,
voici un exemple :
$query = mysql_query(SELECT xxx FROM mytable );
$content = mysql_fetch_array($query);
$content = preg_replace("#[^0-9]#","", $content);
voici un exemple :
$query = mysql_query(SELECT xxx FROM mytable );
$content = mysql_fetch_array($query);
$content = preg_replace("#[^0-9]#","", $content);
Je pense que je vais faire comme ça en attendant de trouver un code plus propre. Merci !
EDIT : En fait je ne peux pas faire ça, étant donné que je fais un déjà un mysql_fetch_array après, et que je ne peux pas l'enlever. Ou alors faudrait que je défasse le premier mais là je sais pas si c'est possible et ça deviendrait vraiment trop sale comme code.
Je cherche encore :/
EDIT : En fait je ne peux pas faire ça, étant donné que je fais un déjà un mysql_fetch_array après, et que je ne peux pas l'enlever. Ou alors faudrait que je défasse le premier mais là je sais pas si c'est possible et ça deviendrait vraiment trop sale comme code.
Je cherche encore :/
Salut,
j'ai fait plusieurs recherches mais je crois qu'il n'est pas possible de faire des substitutions à l'aide d'une expression régulière en MySQL. Il faut donc que tu passes par PHP, et donc la solution proposée par ammmmmine est la meilleure.
Juste deux petites remarques :
- les doubles quotes demandent un peu plus de travail à PHP car il doit interpréter les variables et les caractères spéciaux comme \t ou \n. Un exemple simple :
Il vaut mieux utiliser les simples quotes chaque fois que c'est possible.
- Avec PCRE on peut utiliser la classe \D pour sélectionner tout ce qui n'est pas numérique (le contraire de \d). Je rajoute un + pour traiter en une fois les groupes de plusieurs caractères, c'est plus efficace.
Au final :
j'ai fait plusieurs recherches mais je crois qu'il n'est pas possible de faire des substitutions à l'aide d'une expression régulière en MySQL. Il faut donc que tu passes par PHP, et donc la solution proposée par ammmmmine est la meilleure.
Juste deux petites remarques :
- les doubles quotes demandent un peu plus de travail à PHP car il doit interpréter les variables et les caractères spéciaux comme \t ou \n. Un exemple simple :
<pre><?php $s = 'abc'; echo '$s \n X'; // simple quotes echo '<hr>'; echo "$s \n X"; // double quotes ?></pre>
Il vaut mieux utiliser les simples quotes chaque fois que c'est possible.
- Avec PCRE on peut utiliser la classe \D pour sélectionner tout ce qui n'est pas numérique (le contraire de \d). Je rajoute un + pour traiter en une fois les groupes de plusieurs caractères, c'est plus efficace.
Au final :
$content = preg_replace('#\D+#','', $content);