Posté(e) le 14 janvier 201015 a 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))
Posté(e) le 15 janvier 201015 a 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 ?
Posté(e) le 15 janvier 201015 a Auteur 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
Posté(e) le 16 janvier 201015 a 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 :]
Posté(e) le 18 janvier 201015 a Auteur 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
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.