瀚⾼数据库数据类型转换character转numeric


jyyll
F-hawking 2023-04-19 15:24:42 53221
分类专栏: 资讯

⽬录

环境

⽂档⽤途

详细信息

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7

版本:4.5

⽂档⽤途

解决应⽤程序插⼊报错:”段 accounttype 的类型为 numeric, 但表达式的类型为 character Hint: 你需要重写或转换表达式 Position: 1463 Call getNextException to see other errors in the batch.”;

原因:数据库中没有character转numeric的转换。

详细信息

1.问题:

create table test_character2numeric(id bigserial,test numeric);

highgo=# insert into test_character2numeric(test)values('1.00'::character);

错误:字段"test"的类型为 numeric,但表达式的类型为 character

第1⾏insert into test_character2numeric(test)values('1.00'::cha...

^

提⽰:你需要重写或转换表达式

2.可以看到没有character类型转numeric:

highgo=# \dC+ character

类型转换列表

来源类型|⽬标类型|函数|隐含的?|描述

-------------------+-------------------+--------------------+----------+------

"char"| character | bpchar |在指派中|

boolean | character | text |在指派中|

character |"char"|char|在指派中|

character | character | bpchar |是|

character | character varying | compatible_text |是|

character | name | name |是|

character | nvarchar2 |(binary coercible)|是|

character | text | compatible_text |是|

character | varchar2 |(binary coercible)|是|

character | xml | xml |否|

character varying | character |(binary coercible)|是|

cidr | character | text |在指派中|

inet | character | text |在指派中|

name | character | bpchar |在指派中|

nvarchar2 | character |(binary coercible)|是|

text | character |(binary coercible)|是|

varchar2 | character |(binary coercible)|是|

xml | character |(binary coercible)|在指派中|

(18⾏记录)

3.隐⼠转换语法:

highgo=# \h create cast

Command: CREATE CAST

Description:建⽴新的类型转换

Syntax:

CREATE CAST(类型指派中的源数据类型 AS 类型指派中的⽬标数据类型)

WITH FUNCTION 函数名称[(参数类型[,...])]

[ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST(类型指派中的源数据类型 AS 类型指派中的⽬标数据类型)

WITHOUT FUNCTION

[ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST(类型指派中的源数据类型 AS 类型指派中的⽬标数据类型)

WITH INOUT

[ AS ASSIGNMENT | AS IMPLICIT ]

4.创建隐⼠转换:

highgo=# create cast(character as numeric) with inout as implicit;

CREATE CAST

测试:

highgo=# insert into test_character2numeric(test)values('1.00'::character);

INSERT 01

可以插⼊。

当插⼊值为''时

highgo=# insert into test_character2numeric(test)values(''::character);

错误:⽆效的类型 numeric 输⼊语法:" "

插⼊值为''时需要对其处理后操作:

highgo=# create or replace function cast_character_to_numeric(character) returns numeric as

highgo-# $$

highgo$# select to_number(decode($1::character,''::character,null,$1::character));

highgo$# $$

highgo-# language sql strict;

CREATE FUNCTION

highgo=# create cast(character as numeric) with function cast_character_to_numeric(character) as implicit;错误:类型 character 到 numeric 的转换已经存在

highgo=#

需要删除之前的转换再进⾏创建

highgo=# drop cast(character as numeric);

DROP CAST

highgo=# create cast(character as numeric) with function cast_character_to_numeric(character) as implicit; CREATE CAST

highgo=# insert into test_character2numeric(test)values(''::character);

INSERT 01

此时可以正常插⼊。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=20579
赞同 0
评论 0 条
F-hawkingL3
粉丝 9 发表 151 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2947
【软件正版化】软件正版化工作要点  2867
统信UOS试玩黑神话:悟空  2828
信刻光盘安全隔离与信息交换系统  2723
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1256
grub引导程序无法找到指定设备和分区  1221
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  164
点击报名 | 京东2025校招进校行程预告  163
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  162
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!