将一个百分数插入到数据库中 字段为啥类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个百分数插入到数据库中 字段为啥类型相关的知识,希望对你有一定的参考价值。

比如是从excel里读“5.18364%”存数据库里, 然后页面输出保留小数点后一位:“5.2%”,这个字段应该是什么类型啊?varchar? 数字类型的能存“%”符号么, 具体怎么转成“5.2%”形式啊,多谢

需要用字符型,如varchar,varchar2,char等。

原因:

因为百分数中的百分号属于字符,无法直接插入数字类型中。

演示:

1、创建测试表:

create table test
(id1 number(10,2),
id2 varchar2(10));

2、插入数据:

insert into test values (10%,2);

执行时会报错,因为number类型的字段中无法保存百分数。

insert into test values (1,\'20%\');

按上边语句则可以成功,已经将20%转为字符保存。

参考技术A 用浮点型float 参考技术B sql数据库 float 参考技术C 数字类型吧
读取的时候用格式format一下追问

比如是从excel里读“5.18364%”存数据库里, 然后页面输出保留小数点后一位:“5.2%”,这个字段应该是什么类型啊?varchar? 具体怎么转成“5.2%”形式啊,多谢

追答

看用什么数据库,数据库不同,保存的字段有点区别,保存数据最好不要用varchar
sqlserver 用decimal或float
oracle用number型
字符格式化可以在页面转,也可以在sql里转

本回答被提问者采纳
参考技术D 可以是数字 然后读取的时候转一下

也可以直接存字符

向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))

需要指出的是,C#中有datetime类型,但是这个类型是包括小时,分钟,秒的。这个格式与数据库中的Date类型不符,如果将now设为datetime类型插入数据会失败。

需要通过TO_DATE(‘字段‘,‘YYYY-MM-DD‘))转换。如下:

  1. string.Format("insert into tablename (TIME) values(TO_DATE(‘{0}‘,‘YYYY-MM-DD‘))",now)  

错误写法:

  1. string.Format("insert into tablename (TIME) values( TO_DATE(‘{0}‘,‘YYYY-MM-DD‘) )",now)  
不需要逗号引起来,这是画蛇添足。

以上是关于将一个百分数插入到数据库中 字段为啥类型的主要内容,如果未能解决你的问题,请参考以下文章

求助oracle高手,将varchar类型数据插入到blob类型字段中

mysql 为啥有些字段首字母是大写的在插入时会变成小写?

为啥我不能将这些值插入到我添加到此数据库的表中?

sqlserver 插入完整的数据后,为啥查询出来某个字段为只显示一半

在oracle数据库表中没有添加rowid字段为啥会出现

怎么样把NULL值插入到SQL数据库的INT字段(int可为空)