windu.2b Posté(e) le 14 janvier 2010 Partager Posté(e) le 14 janvier 2010 Bonjour à tous, J'ai remarqué un comportement bizarre dans SQLite : lorsque je veux connaitre la longueur d'un champ d'une vue en SQL, j'obtiens une valeur NULL ! La même commande sur la table à l'origine de la vue me donne le bon résultat. Je peux donc certes obtenir la valeur que je recherche, mais cela m'oblige à "court-circuiter" ma vue pour atteindre la table, ce que j'aimerais éviter. Y a-t-il donc quelque chose de particulier à faire ? Ou bien est-ce une fonctionnalité manquante (ou un bug) de SQLite ? Pour info, voici la requête SQL utilisée: /* * Requête sur la vue */ SELECT LENGTH(oid) FROM V_products /* * Requête sur la table */ SELECT LENGTH(oid) FROM product Voici la structure de la table : CREATE TABLE PRODUCT(OID VARCHAR(36) NOT NULL PRIMARY KEY, NAME VARCHAR(50) NOT NULL, POIDS FLOAT NOT NULL, XUNIT VARCHAR(36), XCATEGORY VARCHAR(36), CONSTRAINT SYS_FK_50 FOREIGN KEY(XUNIT) REFERENCES UNIT(OID), CONSTRAINT SYS_FK_51 FOREIGN KEY(XCATEGORY) REFERENCES CATEGORY(OID)) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 15 janvier 2010 Partager Posté(e) le 15 janvier 2010 C'est un peu étonnant puisque la fonction s'exécute après la récupération de la donnée et ne sait pas si la donnée vient d'une vue ou d'une table à la base J'imagine que tu as vérifié si tu lis la valeur de la colonne de ta vue, que ça te renvoie bien une chaîne non vide ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 15 janvier 2010 Auteur Partager Posté(e) le 15 janvier 2010 C'est un peu étonnant puisque la fonction s'exécute après la récupération de la donnée et ne sait pas si la donnée vient d'une vue ou d'une table à la base J'imagine que tu as vérifié si tu lis la valeur de la colonne de ta vue, que ça te renvoie bien une chaîne non vide ? Oui, bien sûr ! La lecture fonctionne parfaitement bien dans la vue, sinon je me serais, anéfé, posé la question de la construction de ma vue Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 16 janvier 2010 Partager Posté(e) le 16 janvier 2010 J'ai fait le test rapidement avec la dernière version de SQLite : sqlite> CREATE TABLE test ( colText varchar(50) NOT NULL ); sqlite> insert into test (colText) values ('blablabla'); sqlite> select * from test; blablabla sqlite> create view testView as ...> select colText AS text FROM test; sqlite> select * from testView; blablabla sqlite> select LENGTH(colText) from test; 9 sqlite> select LENGTH(text) from testView; 9 Tout fonctionne bien :] Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 18 janvier 2010 Auteur Partager Posté(e) le 18 janvier 2010 Je viens de re-tester, mais au lieu de passer par "sqliteman", je suis passé par l'extension firefox "SQLite Manager"... Et ben, c'est bon ! Je pense donc que ça vient de SQliteman qui est basé sur une vieille version de sqlite. Je clos le topic, merci de ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.