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

MS SQL Server Discussion :

SQL server 2005: conversion d'une chaîne vide en numerique.


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 34
    Points : 24
    Points
    24
    Par défaut SQL server 2005: conversion d'une chaîne vide en numerique.
    Bonjour,
    je suis actuellement sur un projt de migration oracle--> sql server qui n'est pas sans poser d'énormes problèmes de typage et de conversion ...
    je bloque sur l'alimentation 'une table, dont la source sous oracle comprend bcp de champs nulls.

    aussi je cherche à trouver un moeyn d'alimenter la table à partir de valeurs en dur, comme suit:

    insert into dbo.test
    values ('', '8', '8', convert(varchar(255),''))


    les champs null doivent être converti soit en numeric, soit en date, soit en varchar. Pour ce dernier cas, c'est ok, mais pour le numerique et la date, ça ne marche pas.

    insert into dbo.test
    values (convert(numeric(8,0),''), '8', '8', convert(varchar(255),''))

    donne le msg suivant:
    Msg*8114, Niveau*16, État*5, Ligne*1
    Erreur de conversion du type de données varchar en numeric.

    je voudrais connaitre le mioyen d'alimenter la table cible sql server avec des champs null, merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    bonjour,

    vous pourriez utiliser la fonction isnull (si la colonne est à NULL, utiliser la valeur proposée) :

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into dbo.test
    values (isnull('',0), '8', '8', convert(varchar(255),''))

  3. #3
    Membre du Club

    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 46
    Points
    46
    Par défaut
    Avant tout, NULL n'est pas une valeur, ce n'est que l'absence de valeur (NULL est un marqueur).

    En voici quelques méthodes pour traiter les NULL:

    1. Utiliser la fonction COALESCE :

    L’exemple suivant remplace à la volée un marqueur NULL par la valeur -1. La particularité de la fonction COALESCE est d'accepter autant de paramètres que l'on veut. SELECT COALESCE(ProductID, 1, -1) from Sales.SalesOrderDetail

    2. Utiliser la structure CASE : Cette requête permet de remplacer les valeurs NULL par un 0 :

    SELECT CASE WHEN OrderQty IS NULL

    THEN 0 ELSE OrderQty

    END AS OrderQuantity FROM Sales.SalesOrderDetail

Discussions similaires

  1. Sql Server 2005 : conversion d'une BDD en fichier XML
    Par informaticienne_2009 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 23/07/2009, 11h42
  2. [SQL Server 2005] print dans une procédure stockée
    Par anayathefirst dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 21/03/2008, 15h50
  3. [SQL SERVER 2005] comment créer une base de données ?
    Par Syrrus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/03/2007, 14h26
  4. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27

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