博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server 类型转换的一个小坑。
阅读量:7092 次
发布时间:2019-06-28

本文共 751 字,大约阅读时间需要 2 分钟。

hot3.png

没留意过 SQL Server 中的类型转换。 写了句 SQL 来拼接字符串,期望着像常见的编程语言一样, "字符串" + "非字符串" 得到 "拼接后的字符串"。<br>

但实际上 SQL Server 只会把 字符串转为非字符串的类型,再进行相加。

例如:

SELECT 3 + '*'; 输出:Msg 245, Level 16, State 1, Line 1在将 varchar 值 '*' 转换成数据类型 int 时失败。SELECT '*' + 3; 输出:Msg 245, Level 16, State 1, Line 1在将 varchar 值 '*' 转换成数据类型 int 时失败。SELECT '3' + GETDATE();输出:Msg 241, Level 16, State 1, Line 1从字符串向 datetime 转换时失败。

一般来说,SQL Server 中字母和符号是不能转成数值类型的,例如:

SELECT CAST('*' AS INT);输出:Msg 245, Level 16, State 1, Line 1在将 varchar 值 '*' 转换成数据类型 int 时失败。

但是, '+' 和 '-' 这两个符号例外,它俩可以被转为数值类型,并且值都为0。

SELECT CAST('+' AS INT), CAST('-' AS INT), CAST('' AS INT);输出:0 0 0

原因是 SQL Server 在转换时把 '-' 当作 '-0' ,'+' 当作 '+0' , '' 当作 '0' 来看待。

转载于:https://my.oschina.net/oymyisme/blog/270940

你可能感兴趣的文章
Linux系统性能监控(一)
查看>>
文件的创建
查看>>
IEnumerable VS IList
查看>>
人生规划
查看>>
java后台JSON操作
查看>>
bash相关特性
查看>>
『最长等差数列 线性DP』
查看>>
使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
查看>>
【转载】如何将PY文件转成EXE文件
查看>>
我的友情链接
查看>>
RHCS+Oracle配置实战
查看>>
字符串和字符串函数 字符串定义方式
查看>>
图像分析之直方图分析
查看>>
多个站点的VSFTPD
查看>>
初级篇第一期:从0开始
查看>>
窗体上有一JTable,如何让数据库里的数据在表格里显示出来
查看>>
如何在A10的AX上实现TACACS+的AAA认证
查看>>
文件的元数据信息,时间戳,别名,练习
查看>>
蜕变:从菜鸟到Linux安全专家 图书简介、前言、目录发布
查看>>
VS2017 远程调试小记
查看>>