On 07/03/2013 11:14 AM, Doug Currie wrote:
On Mar 7, 2013, at 11:07 AM, Ryan Johnson <ryan.john...@cs.utoronto.ca> wrote:
That does leave the question of what to do with cast ('1.0' as integer), though.
Without the prefix-based matching that would now return NULL rather than 1, even
though cast(1.0 as integer) would still return 1. Then again, disallowing all
floats might be better than the current practice of returning 1 from a cast of
both '1e-10' and '1e10' (the real->integer casts do the right thing, as does
assignment to a column with integer affinity).
Would
cast(cast(x as real) as integer)
do what you want?
Looks like it, though I'd probably make the first cast be to numeric
(may as well go directly to int if you can).
It's also a bit more efficient (2 VDBE ops fewer) and less brittle than
the nasty hack I came up with:
x=cast(cast(x as numeric) as integer)
vs.
x+0=x and cast(x as integer)=x
Ryan
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users