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

Adaptive Server Enterprise Sybase Discussion :

[T-SQL] COmment simuler la fonction isnumeric ?


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre actif
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Points : 226
    Points
    226
    Par défaut [T-SQL] COmment simuler la fonction isnumeric ?
    je souhaite faire une operation du genre:

    update toto set A=10
    where isnumeric(B) = 0
    and B between 0 and 5

    sachant que B est un char(20).

    Mon probleme est que isnumeric n'existe pas sur Sybase, et meme si je developpe cette fonction sous la forme d'une procedre stockée, je ne sais pas trop comment l'appeller dans ma requete et est ce que les performances seront à la hauteur??!!

    Je vous remercie d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 567
    Points
    19 567
    Billets dans le blog
    25
    Par défaut
    Pourquoi faire un isnumeric puisque vous faites un between 0 and 5 ???

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 78
    Points
    78
    Par défaut Re: isnumeric sur sybase
    Citation Envoyé par SegmentationFault
    je souhaite faire une operation du genre:

    update toto set A=10
    where isnumeric(B) = 0
    and B between 0 and 5
    sachant que B est un char(20).

    Probleme est que isnumeric n'existe pas sur Sybase
    Pour vérifier qu'un caractère est ou n'est pas numérique tu peux utiliser les caractères génériques (expressions régulières).

    Mais ton cas quel est l'intéret de vérifier ça ?

    Puisque, comme le dis l'auteur du post ci-dessus, B between 0 and 5 vérifie si B est entre 0 et 5 cela suffit.

    Par contre faut peut être convertir B car dans le between, actuellement B est un char de 20 et 0 et 5 sont des entiers. la conversion n'est pas implicite dans ton cas.

  4. #4
    Membre actif
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Points : 226
    Points
    226
    Par défaut Re: isnumeric sur sybase
    Citation Envoyé par lsone
    Par contre faut peut être convertir B car dans le between, actuellement B est un char de 20 et 0 et 5 sont des entiers. la conversion n'est pas implicite dans ton cas.
    c'est justement ca le problème car ce que je faisais avant :

    update toto set A=10
    where convert(int, B) between 0 and 5

    Mais si jamais B n'est pas numérique, ma requete plante, ce qui est tout à fait normal! d'où l'idée de tester si B est numérique ou pas :

    update toto set A=10
    where isnumeric(B) = 0
    and convert(int, B) between 0 and 5

    Actuellement B pour moi est un char(3), donc je me suis débrouillé en faisant:

    update toto set A=10
    where B like '[0-9][0-9][0-9]'
    and convert(int, B) between 0 and 5

    Mais imaginer ce que ca pourra etre si B est char(80), alors on va pas s'amuser à mettre [0-9] 80 fois!!! ou au pire, que B sera un varchar, donc on connait pas vraiment sa taille!!!!

    Je trouve que c'est dommage qu'un SGBD aussi connu n'a pas des fonctiosn aussi essentielles!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 78
    Points
    78
    Par défaut Re: isnumeric sur sybase
    Citation Envoyé par SegmentationFault
    Citation Envoyé par lsone
    Par contre faut peut être convertir B car dans le between, actuellement B est un char de 20 et 0 et 5 sont des entiers. la conversion n'est pas implicite dans ton cas.
    c'est justement ca le problème car ce que je faisais avant :

    update toto set A=10
    where convert(int, B) between 0 and 5

    Mais si jamais B n'est pas numérique, ma requete plante, ce qui est tout à fait normal! d'où l'idée de tester si B est numérique ou pas :

    update toto set A=10
    where isnumeric(B) = 0
    and convert(int, B) between 0 and 5

    Actuellement B pour moi est un char(3), donc je me suis débrouillé en faisant:

    update toto set A=10
    where B like '[0-9][0-9][0-9]'
    and convert(int, B) between 0 and 5

    Mais imaginer ce que ca pourra etre si B est char(80), alors on va pas s'amuser à mettre [0-9] 80 fois!!! ou au pire, que B sera un varchar, donc on connait pas vraiment sa taille!!!!

    Je trouve que c'est dommage qu'un SGBD aussi connu n'a pas des fonctiosn aussi essentielles!
    T'inquiete le SGBR n'y est pour rien.
    jete un coup d'oeil sur les expressions régulières tu trouveras ton bonheur j epense

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/09/2007, 17h57
  2. [SQL] comment "desactiver" une fonction php dans une page?
    Par horas dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2007, 15h04
  3. comment utiliser une fonction sql en dotNet?
    Par bicho dans le forum Accès aux données
    Réponses: 6
    Dernier message: 19/03/2007, 11h44
  4. [SQL] Comment réaliser une fonction d'incrementation ?
    Par da_latifa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/12/2005, 11h14
  5. [T-SQL] COmment simuler la fonction isnumeric ?
    Par SegmentationFault dans le forum Sybase
    Réponses: 4
    Dernier message: 02/11/2005, 16h57

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