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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Champ non vide et non NULL [phpMyAdmin]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 32
    Par défaut Champ non vide et non NULL
    Bonjour à tous.

    J'espère que vous pourrez m'aider, car je me trouve devant une situation qui me semble... étrange.

    J'ai une base de données composées de deux tables : disons X et Y.
    Dans ces deux tables, j'importe (grâce à "load data local infile...") des fichiers csv : un dans dans chaque table.

    L'import se passe sans problème.

    Dans ma table Y, je me retrouve avec des champs vides. Logiques, puisqu'ils le sont aussi dans le fichier CSV.
    Sauf que... quand je fais une requêtes pour les afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from bdd.Y where champ = ''
    ... rien ne ressort. Bon, Soit.
    Je tente alors un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from bdd.Y where champ IS NULL
    , mais.. pareil, rien ne sort. Ce qui m'embête, car, pour les besoins d'une autre requête (qui implique donc la table Y et la table X), je ne dois pas prendre les champs vides. Sauf que, comme ils semblent ne pas être considérés comme vides, il me les prend en compte, et ça fausse tout mon truc...

    Le truc, c'est que j'ai une requête qui me concatène "xxx" et le contenu de ce champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE bdd.champ SET champ = CONCAT('xxx', champ) WHERE champ != '';
    .
    Sauf que, selon ma base, il n'y a pas de champ '', donc il m'ajoute des "xxx" PARTOUT. Donc, a priori, je me retrouve avec des champs UNIQUEMENT composés de 'xxx' (les anciens champs vides... vous suivez ?).
    Et bien, vous devinez jamais, mais quand je fais une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from bdd.Y where champ ='xxx'
    ... ben, j'ai rien qui ressort.
    Situation inextricable.

    Je ne sais pas quoi faire, et je dois vraiment essayer de régler ce problème le plus vite possible

    Est-ce que qu'une âme charitable saurait POURQUOI un champ vide ne ressort pas lors d'une requête censée faire sortir les champs vides ??
    Est-ce qu'il existe un autre "type" que "vide" et "null" pour désigner un champ non-rempli ?
    Et surtout... comment faire pour régler ça ?

    Merci d'avance à ceux qui se pencheront sur mon problème

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Tu as essayé l'inverse.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from bdd.Y where champ IS NOT NULL

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il semble que tes valeurs ne soient ni vide ni nul. Il peut y avoir un caractère particulier non visible.
    Tu peux simplement ouvrir le CSV avec notepad++ et afficher tous les caractères.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 32
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Tu as essayé l'inverse.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from bdd.Y where champ IS NOT NULL
    Oui, j'ai essayé ça, et la totalité de la table apparait (environ 17000 lignes)

    Il semble que tes valeurs ne soient ni vide ni nul. Il peut y avoir un caractère particulier non visible.
    Tu peux simplement ouvrir le CSV avec notepad++ et afficher tous les caractères.
    J'ai déjà ouvert le fichier avec Notepad++.
    Bon, je n'ai pas trouvé l'option "afficher tous les caractères", mais à première vue, il n'y aurait pas de caractère "non-visible".

    Ce que je ne comprends pas surtout, c'est que ce fichier là, je l'avais déjà importé il y a quelques temps, et je n'avais pas eu de problèmes.

    J'ai réfléchi aux modifications qu'il y avait pu avoir entre la fois précédente et cette fois-ci, et le seul truc qui a changé, c'est l'encodage de ma table (qui est en UTF8_general_ci maintenant, anciennement en latin1_swedish_ci (ou un truc comme ça))
    Mais même en remettant l'ancien encodage, pas d'amélioration...

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Si tu as tout sélectionné alors @Sabotage à raison, il y a un caractère.

    Essaye ceci pour voir.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from bdd.Y where TRIM(champ) = ''

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans Notepad++ : Affichage > Symbole spéciaux > Afficher tous les caractères
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 32
    Par défaut
    Tout d'abord, merci pour vos réponses.

    Il peut y avoir un caractère particulier non visible.
    Tu peux simplement ouvrir le CSV avec notepad++ et afficher tous les caractères.
    Alors... non, je ne vois pas nouveaux caractères... j'ai juste mes points virgules de fin de ligne qui se "transforment" en deux carrés blancs avec écrit dedans "CR" et "LF".

    Essaye ceci pour voir.

    Code SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from bdd.Y where TRIM(champ) = ''
    Ca ne donne rien
    Aucune ligne ne sort...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/03/2016, 09h14
  2. [AC-2007] valeur de champ non nulle
    Par brutus437 dans le forum IHM
    Réponses: 7
    Dernier message: 19/01/2011, 18h30
  3. [MySQL] Lister les champs non null
    Par bernard26000 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/05/2009, 18h01
  4. [insertion]0 et non NULL pour un champ real
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 12/07/2005, 18h19
  5. return array vide et non null
    Par mereyj dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/04/2005, 20h25

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