lightdb支持cast(expr as unsigned)

编程入门 行业动态 更新时间:2024-10-26 10:38:37

lightdb支持<a href=https://www.elefans.com/category/jswz/34/1743506.html style=cast(expr as unsigned)"/>

lightdb支持cast(expr as unsigned)

LightDB 从23.4开始支持mysql 的cast(expr as unsigned) 语法,下面说明下不兼容的注意点及示例

注意点

  • LightDB 还没有实际的unsigned bigint 类型
  • 返回类型与mysql不同,LightDB 为 numeric, mysql 为 unsigned bigint.
  • 表达式不能为日期/时间类型(mysql 支持)。具体见示例。
  • 字符串格式的浮点型不会被截断,这与mysql不同,mysql会截断,如’1.9’ 会被截断为1。具体见示例。
  • 负浮点型常量不会被截断,这与mysql5.7不同,mysql5.7会截断(mysql8不会),如-1.9 会被截断为0(但mysql中浮点型字段中存负数,转换时不会被截断)。具体见示例。

示例

lightdb@test_m=# select cast(123 as unsigned) as unsigned;unsigned 
----------123
(1 row)lightdb@test_m=# select cast(-123 as unsigned) as unsigned;unsigned       
----------------------18446744073709551493
(1 row)lightdb@test_m=# select cast(18446744073709551615 as unsigned) as unsigned;unsigned       
----------------------18446744073709551615
(1 row)lightdb@test_m=# select cast(18446744073709551616 as unsigned) as unsigned;
WARNING:  unsigned bigint out of range, Truncatedunsigned       
----------------------18446744073709551615
(1 row)lightdb@test_m=# select cast(-9223372036854775808 as unsigned) as unsigned;unsigned       
---------------------9223372036854775808
(1 row)lightdb@test_m=# select cast(-9223372036854775809 as unsigned) as unsigned;
WARNING:  unsigned bigint out of range, Truncatedunsigned 
----------0
(1 row)
lightdb@test_m=# select cast(1.4 as unsigned) as unsigned;unsigned 
----------1
(1 row)lightdb@test_m=# select cast(1.5 as unsigned) as unsigned;unsigned 
----------2
(1 row)lightdb@test_m=# select cast(1.9 as unsigned) as unsigned;unsigned 
----------2
(1 row)-- mysql5.7为 0 ,mysql8.0: 18446744073709551614
lightdb@test_m=# select cast(-1.9 as unsigned) as unsigned;unsigned       
----------------------18446744073709551614
(1 row)
-- mysql5.7为 0 ,mysql8.0: 18446744073709551614
lightdb@test_m=# select cast(-1.5 as unsigned) as unsigned;unsigned       
----------------------18446744073709551614
(1 row)
-- mysql5.7为 0 ,mysql8.0: 18446744073709551615
lightdb@test_m=# select cast(-1.4 as unsigned) as unsigned;unsigned       
----------------------18446744073709551615
(1 row)-- mysql: 1
lightdb@test_m=# select cast('1.4' as unsigned) as unsigned;unsigned 
----------1
(1 row)-- mysql: 1
lightdb@test_m=# select cast('1.5' as unsigned) as unsigned;unsigned 
----------2
(1 row)-- mysql: 1
lightdb@test_m=# select cast('1.9' as unsigned) as unsigned;unsigned 
----------2
(1 row)-- mysql: 18446744073709551615
lightdb@test_m=# select cast('-1.4' as unsigned) as unsigned;unsigned       
----------------------18446744073709551615
(1 row)-- mysql: 18446744073709551615
lightdb@test_m=# select cast('-1.5' as unsigned) as unsigned;unsigned       
----------------------18446744073709551614
(1 row)-- mysql: 18446744073709551615
lightdb@test_m=# select cast('-1.9' as unsigned) as unsigned;unsigned       
----------------------18446744073709551614
(1 row)lightdb@test_m=# create table test_c(key1 float4);
CREATE TABLE
lightdb@test_m=# insert into test_c values('-1.6');
INSERT 0 1
lightdb@test_m=# insert into test_c values('-1.4');
INSERT 0 1
lightdb@test_m=# insert into test_c values('-1.5');
INSERT 0 1
lightdb@test_m=# select cast(key1 as unsigned) , key1 from test_c;numeric2unsigned   | key1 
----------------------+------18446744073709551614 | -1.618446744073709551615 | -1.418446744073709551614 | -1.5
(3 rows)lightdb@test_m=# select cast(cast('20121212' as date) as unsigned);
ERROR:  cannot cast type date to numeric
LINE 1: select cast(cast('20121212' as date) as unsigned);^
lightdb@test_m=# 

更多推荐

lightdb支持cast(expr as unsigned)

本文发布于:2023-11-15 22:14:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1607190.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:cast   lightdb   unsigned   expr

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!