如果你对SQL使用的经验不是足够丰富,如果你在SQL中解决的问题不够多,请认真看完本章,它可以让你避免一个很可能经常会犯的错误!

我们先创建一个测试表

create table #table1 ( id int identity(1,1) primary key, col1 int not null, col2 decimal(18,1) )

然后插入数据

insert into #table1 (col1,col2) select 0,0.1 union all select 1,1.1 union all select 2,2.2 union all select 3,3.3

我们来猜猜下面Select语句的结果

select * from #table1 where col1< >''

心细的朋友可能要说了,上面这个SQL肯定报错啊,col1是int类型,怎么能和''这个varchar类型的值来比较了。但是朋友你错了,上面的SQL是能够查出结果集的,查询结果如下: id  col1 col2 2    1    1.1 3    2    2.2 4    3    3.3

这是怎么回事呢?我们只要做一个测试就知道了,请执行下面语句:

select convert(int,'')

查询结果如下: 无列名  0

呵呵,朋友们知道了吧,''在SQL中是能够隐式转换为int型的,转化后的值为0,所以我们上面的select语句其实就等于

select * from #table1 where col1< >0

心细的朋友可能又在想了,既然''可以隐式转换为int类型,那么肯定也可以转换为decimal类型,呵呵,这样想的朋友又错了。

select * from #table1 where col2< >''

上面SQL执行会报如下错误: 从数据类型 varchar 转换为 numeric 时出错。

也就是说,''是不能够隐式转换为decimal类型的。

总结: 1,在SQL查询中,对int列进行与''值对比时,''会隐式转化为0, 即 select * from #table1 where col1< >'' 等同于 select * from #table1 where col1< >0 2,将''与decimal列对比,会报错类型转换错误。

注意: 以上所有代码小编均在SQL SERVER2005中测试,其它版本未测试过. 以上结论为小编在实际操作中测试出来的,暂还不知其中原因,等小编找到其中原由后会在本站发布,敬请关注小站!

转载于:https://www.cnblogs.com/zxktxj/archive/2012/06/12/2546710.html

SQL中int类型与varchar类型的隐式转换相关推荐

  1. 在将varchar值id转换为int时失败_MySQL令人咋舌的隐式转换

    导读 作者徐晨亮,MySQL DBA,知数堂学员.热衷于数据库优化,自动化运维及数据库周边工具开发,对MySQL源码有一定的兴趣 本文建议横屏观看,效果更佳 一.问题描述 root@mysqldb 2 ...

  2. 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南

    这篇短文将结合实例对隐式转换的各种场景进行解释和总结,希望看完的人能够安全驶过隐式转换这个大坑. 隐式转换函数 隐式转换函数有两种作用场景. 1 转换为期望类型:就是指一旦编译器看到X,但需要Y,就会 ...

  3. sql隐式转换_SQL Server中的隐式转换

    sql隐式转换 This article will provide an overview of SQL Server implicit conversion including data type ...

  4. 从 ++[[]][+[]]+[+[]]==10? 深入浅出弱类型 JS 的隐式转换

    起因 凡是都有一个来源和起因,这个题不是我哪篇文章看到的,也不是我瞎几把乱造出来的,我也没这个天赋和能力,是我同事之前丢到群里,叫我们在浏览器输出一下,对结果出乎意料,本着实事求是的精神,探寻事物的本 ...

  5. MySQL和Oracle中的隐式转换

    今天在处理一个问题的时候,需要根据其他部门提供的sql语句对一个表中的数据进行了筛查. 语句类似下面的形式 > SELECT MAX_LEVEL,LOGOUT_TIME,CURRENT_DATE ...

  6. mysql日期隐式转换_mysql中的隐式转换

    什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...

  7. mysql 隐式转换 索引_MySQL SQL优化之字符串索引隐式转换

    之前有用户很不解:SQL语句非常简单,就是select * from test_1 where user_id=1 这种类型,而且user_id上已经建立索引了,怎么还是查询很慢? test_1的表结 ...

  8. mysql 关闭隐式转换_Mysql中的隐式转换

    在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引,下面分析两种隐式转换的情况看表结构phone为int类型,name为varchar类型 EXPLAIN ...

  9. scala中的隐式转换、隐式参数和隐式类

    scala中的隐式转换.隐式参数和隐式类 @(SCALA)[scala] scala中的隐式转换隐式参数和隐式类 一隐式转换 1示例 2隐式转换的条件 二隐式参数 1示例 三隐式类 1示例 隐式转换是 ...

  10. oracle的int范围,oracle中int类型和number类型区别

    oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...

最新文章

  1. linux安装中文环境,[Linux]Ubuntu 7.04 中文环境的安装
  2. .NET CF WM上创建快捷方式
  3. android局部布局替换,Android 局部布局替换的实现方式
  4. 2019中韩版权研讨会举行 网络成版权保护主战场
  5. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
  6. 2017提高组D1T1 洛谷P3951 小凯的疑惑
  7. 论高校计算机信息管理能力的提升,论高校计算机信息管理能力的提升
  8. 达摩院年终发布:2022十大科技趋势
  9. SPSS(1)--安装hayes process插件及用Bootstrap方法进行中介效应检验
  10. pcsx2运行ps1_PS2模拟器PSX2设置及使用教程.doc
  11. 自己写个基金分析系统,准确率也太高了
  12. 现代计算机专业版官网,现代计算机期刊_投稿邮箱_杂志_编辑部_审稿_投稿须知...
  13. php 微信 公众 平台,微信公众平台代码详解-php语言(一)
  14. No1.初来乍到,请多指教
  15. 可参考的oa系统demo,抠图网站,机票界面,博客开发网站
  16. openwrt网络唤醒计算机,使用OpenWrt软路由唤醒网络设备
  17. 为什么一个手机有两个mac地址?
  18. HTML5标签+基础特性
  19. Windows 7 中文版命令行如何修改字符编码为UTF-8?
  20. 浅谈我对元宇宙、Web3、区块链与NFT的理解

热门文章

  1. ios 判断app程序第一次启动方法
  2. ASP.NET 2.0中改变passwordrecovery发邮件时的信息
  3. MATLAB的基础-虽然基础,但全是细节,掌握了这些细节,才是MATLAB高手
  4. python str byte编码_Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题...
  5. js网页如何获取手机屏幕宽度
  6. LeetCode--167--两数之和 II - 输入有序数组
  7. 数据库事务的四大特性以及事务的隔离级别
  8. 【初探移动前端开发02】移动设备的页面
  9. Linux有问必答:如何安装autossh
  10. CCF NOI1014 写评语