4 ms·
Just for curiosity's sake, I built SQLite 3.2.7 (from 2005-09-24) and 2.8.17 (bugfix on the old 2.8 line, from 2005-12-19) and tried this in the shell in both:
by professoretc 5y ago
Just for curiosity's sake, I built SQLite 3.2.7 (from 2005-09-24) and 2.8.17 (bugfix on the old 2.8 line, from 2005-12-19) and tried this in the shell in both:
sqlite> create table test_tbl ( test TEXT );
sqlite> insert into test_tbl values ( "0123" );
sqlite> select * from test_tbl;
Both give the same output: 0123. Were you using an API wrapper around SQLite that was doing its own coercions, perhaps?
- em500 5y agoThanks for taking the trouble. Small syntax nitpick: in ANSI SQL, double quotes are used for identifiers (such as table or column names), single quotes for string literals ('01234'). Most databases (including sqlite) are a bit more permissive, but it's better to stick to the rules (https://www.sqlite.org/lang_keywords.html https://www.sqlite.org/lang_keywords.html)
- CRConrad 5y agoCould it even be that the double quotes around values are interpreted as some kind of "strong quotes", where single quotes wouldn't? So, inserting '0123' gets coerced to integer 123, whereas "0123" in doubles is interpreted as "No really, I mean it, this is a string!" and therefore keeps the leading zero? Just a WAG.
- professoretc 5y agoJust tried it with single-quotes and the output is the same.