位置: 编程技术 - 正文

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的解决方法

  • 增值税纳税申报时间
  • 非税收入未上缴
  • 公务接待和商务服务区别
  • 公司出售房产缴纳什么税
  • 其他应付款能转收入么
  • 管理部门购入固定资产
  • 员工报销油费计入个税吗
  • 以前年度亏损可以在季报弥补吗
  • 免税企业可以开具有税率的增值税专用发票吗
  • 国税票怎么开
  • 以旧换新要按商品价格吗
  • 关于发票入账的会计分录
  • 营业收入中包括营业外收入吗
  • 公司注册资金未实缴可以申请破产吗
  • 增值税税控盘服务费可以每年都抵扣吗
  • 汇算清缴后需要退税如何操作?
  • 清算财产分配会计分录
  • 或有负债披露原则
  • 年末存货怎么计算
  • msvcp140.dll丢失怎么办
  • type3插件
  • 如何修复面部毛孔粗大
  • php上传文件夹
  • 行政单位跨年度收到发票,补付尾款会计分录
  • msoobe.exe是什么
  • php ftp上传文件
  • php bcmul
  • php数组函数面试题
  • html5微博
  • 消费税的计算过程
  • php sha1加密 解密
  • 活动策划印花税选哪个税种
  • gmt微调
  • apache php mysql开发环境安装教程
  • 非营利组织能否开社保账户
  • 织梦发布文章栏目怎么不显示
  • 转出未交增值税最终怎么转平
  • 预计可变现净值与账面成本的关系
  • 预收账款挂多久确认收入
  • 福利费用属于哪个部门
  • 暂估入库的会计分录怎么写
  • 现金流量表编制实操
  • 电力行业规定
  • 记账凭证会计核算形式的程序
  • 化妆品的成本利润率
  • 公司注销后应收账款转给个人
  • 物业公司代收代付租金要开发票吗
  • 两家公司的钱混着用怎么做账
  • 公司收到某人打款怎么做分录
  • 福利费可以直接发钱吗
  • 短期理财收益账务分录
  • 物业管理公司如何应用节能新技术
  • 股权变更需要交哪些税
  • Ubuntu16.04 server下配置MySQL,并开启远程连接的方法
  • MySQL为字段添加主键
  • window下mysql忘记密码
  • 3种不用重装的手机
  • 解决mac上不能写字的办法
  • linux系统中用户可以分为三种
  • 苹果电脑支付在哪里设置
  • win7为什么不能设置滑动关机
  • win8.1怎么设置
  • linux端口流量监控
  • html上拉加载更多
  • 批处理命令实例
  • nodejs报错
  • linux怎么查看tomcat位置
  • ping大包丢包小包不丢包
  • python列表讲解
  • jQuery EasyUI tree 使用拖拽时遇到的错误小结
  • nodejs cgi
  • node.js web开发
  • unity shader视频教程
  • JavaScript中的事件处理
  • android网络访问异常提示有哪些
  • js面向对象写法
  • 简单的移动端项目
  • 国家税务总局会议管理办法
  • 江苏省高新区地图
  • 辽宁地方税务局招聘
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设