
sql server
set number = right(REPLICATE('0',7) + rtrim(id),7)
mysql
LPAD(id,7,'0')
看你的类型是number和varchar2应该是oracle的数据库,oracle中number转varchar2: select to_varchar(n_value) from dual;sql server中: select cast(n_value as varchar);
在数据库设计的时候,VARCHAR和CHAR类型之间的使用,我和小唐发生了分歧。
我坚持要对表中的某些列,比如个性签名,使用CHAR型的来存储字符串信息。因为我认为使用CHAR一方面在数据库检索起来速度更快,同时在使用COBOL程序在逻辑上处理CHAR字符串生成的变量的时候,也相对简单,只要直接给变量赋值就可以了,这样子也便于程序的处理。而如果使用使用那个VARCHAR的话,数据检索效率相对低,而在COBOL中需要首先给字符串的长度赋值,然后在给它的内容赋值。这样子加大了程序的逻辑处理过程。还带来了一定的风险,比如赋值的时候,如果赋值的长度超过了最大的值,就会使得程序执行的时候出现意想不到的后果。
而他认为,他使用CHAR类型,很容易浪费存储空间,因为如果使用CHAR,无论存储的字符串内容的长度是多长,都会使用它固定长度去存储它。而使用VARCHAR则可以根据它实际的字符串长度去存储数据。这个是VARCHAR类型最大的特点,也是它到现在在数据库技术中还能存在的根本原因。
我开始对自己的想法变得有点怀疑。后来,我去网上找了找相关的资料,得知:
1,如果希望列中的数据值大小接近一致,请使用char;如果希望列中的数据值大小显著不同,请使用varchar。
2,事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利
3,当数据的长度相差较大时,使用char会浪费很多的空间,而使用varchar可以节约大量的空间,对于数据量比较大的情况,更能体现出两者的差异。当数据长度比较固定(相差较小或固定不变)时,两者的差别就不太大。
4,在查询时,由于存储方式上的不同,导致char字段的查询速度要好于varchar字段,特别是对于在极大量的数据中查询。
综合上述因素,我采取了他的做法。后来才知道,其实,那些东西都已经是约定俗成了的。对于较长的字符串就是应该使用VARCHAR类型。看来自己还是有很多的东西值得去学习,而不是片面地从程序处理逻辑上来理解,判断。
由于integer和varchar2是不兼容的数据类型,不能直接修改字段类型,可采取如下步骤:
1、如果导入到oracle中的表名是使用中的,先将其改名(用rename)。
2、导出原表的创建脚本,修改自动增长字段的类型为varchar2(50)。
3、用sql语句把原表(重命名后的表)的数据插入到新建的表中,原来是integer类型的字段用to_char转换一下就可以了。
原因:转换错误导致。解决方法:重新查看内容来解决此问题。
如下参考:
1打开数据库连接客户端NavicatPremium,并创建一个新的表结构,其中age列被故意设置为varchar。
2成功创建表之后,为表创建一些数据,如下所示。
3当有少量数据时,可以使用sum()函数直接求和,因为在SQL中它可以自动识别是字符串类型还是数字类型。
4以上适用于整数、体或小数据,如果数据太大,且精度不高不适用,那么可以考虑使用SQLCAST()和CONVERT()函数。
5接下来,看一下CONVERT()函数,它主要满足精度要求,并通过更改原始数据和将age列更改为带有小数的列来测试它。
以上就是关于在数据库中怎么让int转换成varchar时前边添上0补位全部的内容,包括:在数据库中怎么让int转换成varchar时前边添上0补位、如何把number类型转化成varchar、db2数据库把char类型直接改成varchar类型吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)