Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Clarify the semantics of a CAST to NUMERIC. Ticket https://www.sqlite.org/src/tktview/afdc5a29dc |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
7a51b32537ac7e95914dc8b49ef617fe |
User & Date: | drh 2019-06-11 15:54:58 |
Context
2019-06-12
| ||
10:55 | Enhancements to the change log. (check-in: 06b9f7898d user: drh tags: trunk) | |
2019-06-11
| ||
15:54 | Clarify the semantics of a CAST to NUMERIC. Ticket https://www.sqlite.org/src/tktview/afdc5a29dc (check-in: 7a51b32537 user: drh tags: trunk) | |
13:40 | Clarify how mathematical operators function given string or blob operands. Ticket https://www.sqlite.org/src/tktview/1819598c09 (check-in: e0f700bb6c user: drh tags: trunk) | |
Changes
Changes to pages/lang.in.
︙ | ︙ | |||
2356 2357 2358 2359 2360 2361 2362 | <p>^If the value of <i>expr</i> is NULL, then the result of the CAST expression is also NULL. ^Otherwise, the storage class of the result is determined by applying the [rules for determining column affinity] to the <yyterm>type-name</yyterm>. <table border=1> <tr> | | | 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 | <p>^If the value of <i>expr</i> is NULL, then the result of the CAST expression is also NULL. ^Otherwise, the storage class of the result is determined by applying the [rules for determining column affinity] to the <yyterm>type-name</yyterm>. <table border=1> <tr> <th> Affinity of <yyterm><nobr>type-name</nobr></yyterm> <th> Conversion Processing <tr> <td> NONE <td> ^Casting a value to a <yyterm>type-name</yyterm> with no affinity causes the value to be converted into a BLOB. ^Casting to a BLOB consists of first casting the value to TEXT in the [encoding] of the database connection, then |
︙ | ︙ | |||
2427 2428 2429 2430 2431 2432 2433 | casting a REAL value greater than +9223372036854775807.0 into an integer resulted in the most negative integer, -9223372036854775808. This behavior was meant to emulate the behavior of x86/x64 hardware when doing the equivalent cast. <tr> <td> NUMERIC | | > > > | > > > > > > | | < > | 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 | casting a REAL value greater than +9223372036854775807.0 into an integer resulted in the most negative integer, -9223372036854775808. This behavior was meant to emulate the behavior of x86/x64 hardware when doing the equivalent cast. <tr> <td> NUMERIC <td> ^Casting a TEXT or BLOB value into NUMERIC yields either an INTEGER or a REAL result. ^If the input text looks like an integer (there is no decimal point nor exponent) and the value is small enough to fit in a 64-bit signed integer, then the result will be INTEGER. ^Input text that looks like floating point (there is a decimal point and/or an exponent) and the text describes a value that can be losslessly converted back and forth between IEEE 754 64-bit float and a 51-bit signed integer, then the result is INTEGER. (In the previous sentence, a 51-bit integer is specified since that is one bit less than the length of the mantissa of an IEEE 754 64-bit float and thus provides a 1-bit of margin for the text-to-float conversion operation.) ^Any text input that describes a value outside the range of a 64-bit signed integer yields a REAL result. <p> ^Casting a REAL or INTEGER value to NUMERIC is a no-op, even if a real value could be losslessly converted to an integer. </tr> </table> |
︙ | ︙ |