IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Fonction permettant de savoir si un caractère est une lettre ou un chiffre ?


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 93
    Par défaut Fonction permettant de savoir si un caractère est une lettre ou un chiffre ?
    Bonjour,

    Connaissez vous une fonction qui me permettrait d'identifier si un caractere dans un varchar est une lettre ou un chiffre ?
    Select decode(substr(T.reference,1,1),[A:Z],'lettre',[0,9],'chiffre') from tests T where T.test=1303506335

    Merci

    Bonne soiée

    Brigitte

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    le code ascii.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ASCII('z')
    FROM dual
     
    [0-9] : 48-57
    [A-Z] : 65-90
    [a-z] : 97-122

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 93
    Par défaut
    Bonjour,

    Merci, mais comment retourner lettre ou chiffre?

    Bonne journée

    Bibi

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT table_name, SUBSTR(table_name, 2,1),
    		(CASE WHEN ASCII(SUBSTR(table_name, 2,1)) BETWEEN 48 AND 57 THEN 'chiffre'
    			WHEN ASCII(SUBSTR(table_name, 2,1)) BETWEEN 65 AND 90 THEN 'lettre'
    			WHEN ASCII(SUBSTR(table_name, 2,1)) BETWEEN 97 AND 122 THEN 'lettre'
    			ELSE 'autre caractère' END) AS carac
    FROM ALL_TABLES

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Un tout petit bémol concernant le possibilité pour certains jeux de caractères de ne pas forcément retourner les mêmes valeurs pour les mêmes caractères.

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ok, 2ème version donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT table_name, SUBSTR(table_name, 8,1),
    	COALESCE(DECODE(SUBSTR(table_name, 8,1), NULL, 'NULL'),
    		DECODE(RTRIM(SUBSTR(table_name, 8,1), '0123456789'), NULL, 'chiffre'),
    		DECODE(RTRIM(SUBSTR(table_name, 8,1), 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), NULL, 'lettre'),
    		'autre') AS carac
    FROM ALL_TABLES
    j'ai mis un substr(8) car j'ai des noms de table avec des années en 8ème position

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/09/2009, 17h00
  2. Réponses: 3
    Dernier message: 12/12/2008, 10h47
  3. Savoir si un caractère est dans une chaine
    Par flamel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2008, 23h54
  4. Comment tester si un caractère est une lettre ?
    Par Coussati dans le forum Débuter
    Réponses: 4
    Dernier message: 14/01/2008, 20h00
  5. Réponses: 3
    Dernier message: 19/07/2007, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo