2010-08-20 4 views

Répondre

2

Si vous créez la table avec:

CREATE TABLE configuration(Key STRING, Value TEXT, PRIMARY KEY (Key)); 

(il n'y a pas de pénalité de stockage pour faire ceci avec SQLite) alors vous obtiendrez les zéros de tête préservés, même si vous utilisez la forme la plus simple de INSERT. C'est parce que STRING is not a real SQLite type, and so has NUMERIC affinity.

+0

Pas pour SQLite. "STRING" sera interprété comme "TEXT". Ainsi, 'VARCHAR',' VARCHAR2', et 'POTATO'. (Je ne plaisante pas). – MPelletier

+0

@MPelletier: Je le sais, mais je sais aussi que quand j'utilise 'TEXT' ça marche et quand j'utilise' STRING', ça ne marche pas. Je l'ai simplement testé. –

+2

@MPelletier: Hah. Il est * documenté * que STRING est NUMERIC (voir le lien édité dans). C'est un vrai piège! –

0

Je ne suis pas sûr de ce que vous essayez, mais essentiellement, il devrait être:

INSERT INTO configuration VALUES(42,'0042'); 
+0

Cela n'a aucun effet. –

+0

Désolé, la configuration ne doit pas être entre guillemets. – MPelletier

+0

Cela ne fait aucune différence. (Les guillemets étaient bien, c'est la syntaxe SQL pour une entité nommée comme une colonne ou un champ où le nom ne peut pas être utilisé "nu".) Vraiment. Je tape juste ceci dans une session interactive et obtiens le mauvais comportement ... –

Questions connexes