sql数据类型转换有哪些方法?
Admin 2021-05-31 群英技术资讯 2084 次浏览
这篇文章给大家分享的是有关sql中数据类型转换的内容,在SQL Server有显性数据转换和隐性数据转换这两种数据类型转化方法,感兴趣的朋友就跟随小编一起来看看这两种sql数据类型转换吧。
1 显式转换
显示转换是将某种数据类型的表达式显式转换为另一种数据类型。常用的是CAST 和 CONVERT 函数。
CAST: CAST ( expression AS data_type )
CONVERT: CONVERT (data_type[(length)], expression [, style])
参数 expression 是任何有效的 Microsoft SQL Server表达式。data_type 目标系统所提供的数据类型,不能使用用户定义的数据类型。
2 隐性转换
隐性转换对于用户是不可见的,由SQL Server 引擎自动处理。 隐性转换自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。
当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。
3 隐性转换的风险
隐性转换有的时候非常方便,可以简化SQL 脚本,但是这里面也孕育着潜在的风险,可能会出现在脚本一开始运行的时候都是正常的,但却某一个时间点之后,程序莫名出现错误。下面举一个现实项目中的例子来说明。
在SQL Server 2008中有一个表,需要从两个不同的数据表中拉取数据,由于这两个数据表属于不同的系统,其主键类型是不同的,一个是int类型,一个是GUID,一开始想着这两个都可以转换成字符类型进行存储。所以就在表中建立一个nvarchar(50)的混合ID列作为主键。如下图所示:

一开始拉取的数据并未有GUID的值,都是INT类型转换过来的数据,所以SQL脚本运行的正常,但是突然某一次运行时,出现了“在将 nvarchar 值 '4C185367-F004-41FE-8A0A-DB4E819B1FF2' 转换成数据类型 int 时失败。”的错误。如下图所示:

定位到脚本,执行的SQL如下:
select * from dbo.Demo where 混合ID=305
其中主键中的数据有GUID转换的字符型,也有INT转换的字符串,示例数据如下:

但是如果执行下面的SQL,则都是正常执行:
select * from dbo.Demo where 混合ID=305 and 名称='INT' select * from dbo.Demo where 混合ID=305 and 序号='2' select * from dbo.Demo where 混合ID=305 and 序号=2 select * from dbo.Demo where 混合ID='305' and 名称='INT' select * from dbo.Demo where 混合ID='305'
结果如下:

出现上述错误的结果应该是这样的:
select * from dbo.Demo where 混合ID=305在执行时,SQL Server会将nvarchar类型的隐性转换成int类型,如果数据中没有GUID类型的字符,则转换正常,如果有,当进行GUID字符到INT的隐性转换时,则转换失败。

以上就是关于sql数据类型转换的介绍,对于新手理解sql数据类型转换有一定的参考借鉴价值,需要的朋友可以看看,希望大家阅读完这篇文章能有所收获。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是有关sql存储过程的内容,对于存储过程的使用在SQL中是比较重要的,为帮助大家学习和理解存储过程,下文介绍了存储过程的定义、好处、语法、参数和使用等等,感兴趣的朋友可以看看。
这篇文章主要介绍了sql 数据库出现“只读”提示 解决方法 (sql 错误 5120),需要的朋友可以参考下
SQRT 函数用于计算得出任何数值的平方根,有不少朋友对于SQRT函数的使用比较感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
MySQL安装完成后,需要启动服务进程,否则客户端无法连接数据库。在前面的配置过程中,已经将MySQL安装为Windows服务,当Windows启动时MySQL服务也会随着启动,然而有时需要手动控制MySQL服务的启动与停止,此时可以通过两种方式来实现。
这篇文章给大家分享的是有关sql临时表的创建和使用的内容,小编觉得挺实用的,因此分享给大家做个参考,另外在使用sql临时表时,有几点问题是需要注意的,接下来一起跟随小编看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008