Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

Sql Server 类型转换的一个小坑

时 间:2016-07-22 08:11:34
作 者:缪炜   ID:24010  城市:江阴
摘 要:没留意过 SQL Server 中的类型转换。 写了句 SQL 来拼接字符串,期望着像常见的编程语言一样, "字符串" + "非字符串" 得到 "拼接后的字符串"。但实际上 SQL Server 只会把 字符串转为非字符串的类型,再进行相加。

正 文:

例如:

<!-- lang: sql --> 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 中字母和符号是不能转成数值类型的,例如:

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

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

<!-- lang: sql --> Select CAST('+' AS INT), CAST('-' AS INT), CAST('' AS INT);
输出:
0    0    0

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



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助