数据库字符串类型传数字影响性能吗

数据库字符串类型传数字影响性能吗,第1张

影响,数据类型选择遵守的原则#

更小的通常更好(在正常存储数据的情况下,最小数据类型最好,可以提高性能)

尽量避免null

基础知识点

Copy

1.不同编码类型,存储数据的大小不一致。utf-8, 一个汉字3字节 英文字母1字节;

2.GBK存储,1个汉字2个字节,英文字母1个字节;

2.数字类型# 1.整数类型

存储的值的范围在-2(n-1)到2(n-1)-1,其中n是存储空间的维数

类型 大小 特点 备注

unsigned 表示无符号的,表示不允许负值,可以让正数的大小扩大一倍

Zerofill 标记 Int(4) zerofill显示时不足4位会补0

tinyint 1字节,8位,大小在-128~127 tinyint unsigned 大小编程了 0~255

smallint 2字节,16位

mediumint 3字节,24位

int 4字节,32位

bigint 8字节,64位

先检查金额列的数据是否都符合小数规范,转为数字格式只有是数字的字符串才能转,如000012转为12,.55转为0.55,若是个英文符号等字符转了就报无效数字类型的错。

转换的方式很多,但是字符串转换成数字的前提是字符串中只包含了数字或者小数点。

可使用convert函数,cast 和convert可以显式转换数据类型,在某些情况下SQL会根据实际情况自动转换!不过建议显式的转换一下,这样的话可读性高一点!

因为字符串不一定能转换成数字,所以用上面的,加上错误处理比较。

例子:

declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

结果:

declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9987041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存