位置: 编程技术 - 正文

SQL Server数据类型转换方法(sqlserver数据类型转换函数)

编辑:rootadmin

推荐整理分享SQL Server数据类型转换方法(sqlserver数据类型转换函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql server数据类型整理,sql server数据类型有哪几种,sqlserver数据类型转换函数,sql server数据类型有哪几种,sqlserver数据类型转换函数,sql server数据类型有哪些,sql server数据类型转换,sqlserver数据类型转换函数,内容如对您有帮助,希望把文章链接给更多的朋友!

在SQL Server日常的函数、存储过程和SQL语句中,经常会用到不同数据类型的转换。在SQL Server有两种数据转换类型:一种是显性数据转换;另一种是隐性数据转换。下面分别对这两种数据类型转换进行简要的说明:

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 中有一个表,需要从两个不同的数据表中拉取数据,由于这两个数据表属于不同的系统,其主键类型是不同的,一个是int类型,一个是GUID,一开始想着这两个都可以转换成字符类型进行存储。所以就在表中建立一个nvarchar()的混合ID列作为主键。如下图所示:

SQL Server数据类型转换方法(sqlserver数据类型转换函数)

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

定位到脚本,执行的SQL如下:

select * from dbo.Demo where 混合ID=

其中主键中的数据有GUID转换的字符型,也有INT转换的字符串,示例数据如下:

但是如果执行下面的SQL,则都是正常执行:

结果如下:

出现上述错误的结果应该是这样的:

select * from dbo.Demo where 混合ID=在执行时,SQL Server会将nvarchar类型的隐性转换成int类型,如果数据中没有GUID类型的字符,则转换正常,如果有,当进行GUID字符到INT的隐性转换时,则转换失败。

标签: sqlserver数据类型转换函数

本文链接地址:https://www.jiuchutong.com/biancheng/312902.html 转载请保留说明!

上一篇:SQL语句性能优化(续)(sql性能优化方法)

下一篇:SQL(MSSQLSERVER)服务启动错误代码3414的解决方法

  • 增值税先征后退会计处理
  • 主营业务成本包括职工薪酬吗
  • 员工预支工资账务处理
  • 在公司交社保不满十年,女性按照什么退税
  • 购买了材料怎么做账
  • 个税全年一次性奖金单独计税
  • 社保基金会割肉操作吗
  • 没收到发票可以做成本吗
  • 简易征收可以抵扣进项吗
  • 公司账户没有钱怎么办
  • 工业企业财务核算方法
  • 建筑业简易征收的适用范围
  • 预售 首付
  • 污水处理费怎么收取的
  • 2019小规模纳税人增值税起征点
  • 资产收购账务处理
  • 汽车保险费里的钱能退吗
  • 企业购买理财产品的会计分录
  • 产品打样费计入什么科目
  • 进料进口
  • 利润分成的会计分录
  • 简单介绍linux
  • 销售产品出去 怎么做科目
  • php解密在线
  • 诉讼费属于什么科目类别
  • Netlib.exe - Netlib是什么进程 有什么用
  • element组件的二次封装注册
  • 建筑企业跨区域还需预缴增值税吗
  • 三趾鹑是野鸡吗
  • php常用字符串
  • php使用自定义函数的方式
  • php curl file_get_contents
  • 建筑业挂靠工程会计与税务处理怎么做?
  • vue面试题视频
  • php分类
  • 免费赠送的产品报关金额
  • 现金流量表中有应收账款吗
  • 公司购买烟酒怎么入账
  • 机器学习——果蔬分类
  • 记账凭证摘要怎么填写
  • 交通费用怎么报销
  • 错开发票所需要提供的资料和时效要求是?
  • 公司清算的特征
  • 小规模纳税人防水工程专用发票税率是多少
  • sqlserver数据库获取当前时间
  • Windows7下Microsoft SQL Server 2008安装图解和注意事项
  • 变卖固定资产的账务处理
  • 投资收益账户属于所有者权益类吗
  • 以土地作价投资合伙企业是否缴纳土地增值税
  • 加盟费收入如何入账
  • 销售退回的会计分录 预计负债
  • 公司增资的法条
  • 商品预计退回会扣钱吗
  • 成品油预付卡销售*成品油卡 怎么入账
  • 记账凭证修改有几种方法
  • 公司五金是哪五金
  • 企业其他应付款增加的原因
  • 资产减值损失会计处理
  • 如何win8.1升级win10正式版
  • 系统盘gpt转mbr
  • win10预览版21301bug
  • mac如何查看隐藏的文件夹
  • macos使用方法
  • windows8.1界面
  • os x 10.11 el capitan系统安装图文教程
  • centos ll
  • 升级win10系统后电脑变卡处理方法
  • PHP 7.0.0 Alpha 2 发布
  • 防止非法使用计算机,可口令
  • win10系统玩游戏闪退怎么解决
  • cocos2dx怎么打开
  • js object.seal
  • egret引擎基础入门
  • android自定义属性详解
  • jquery插件ajaxupload实现文件上传操作
  • 数据库的基本操作实验报告
  • js实现滑块拖动
  • python发送信息到微信
  • 天津电子税务局ca证书
  • 税收公司法人有风险么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设