[SQL] Ne pas prendre les alphanumériques ?

Kopros Messages postés 631 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 ?

A voir également:

3 réponses

schancel Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   49
 
tu recupere le nombre de caractere puis tu incremente avec la boucle for
je ne peut t'en dire plus
0
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.
0
Utilisateur anonyme
 
salut,

voici un exemple :

$query = mysql_query(SELECT xxx FROM mytable );
$content = mysql_fetch_array($query);
$content = preg_replace("#[^0-9]#","", $content);
0
Kopros Messages postés 631 Statut Membre 89
 
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 :/
0
Groarh Messages postés 706 Statut Membre 185
 
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 :
<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);
0
vordano Messages postés 1981 Statut Membre 316
 
bonjour,

le sql étant un language d'interrogation des bdd, normalement on ne peux pas traiter le résultat avant de le renvoyer
0