SQL中int类型与varchar类型的隐式转换
如果你对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类型的隐式转换相关推荐
- 在将varchar值id转换为int时失败_MySQL令人咋舌的隐式转换
导读 作者徐晨亮,MySQL DBA,知数堂学员.热衷于数据库优化,自动化运维及数据库周边工具开发,对MySQL源码有一定的兴趣 本文建议横屏观看,效果更佳 一.问题描述 root@mysqldb 2 ...
- 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南
这篇短文将结合实例对隐式转换的各种场景进行解释和总结,希望看完的人能够安全驶过隐式转换这个大坑. 隐式转换函数 隐式转换函数有两种作用场景. 1 转换为期望类型:就是指一旦编译器看到X,但需要Y,就会 ...
- sql隐式转换_SQL Server中的隐式转换
sql隐式转换 This article will provide an overview of SQL Server implicit conversion including data type ...
- 从 ++[[]][+[]]+[+[]]==10? 深入浅出弱类型 JS 的隐式转换
起因 凡是都有一个来源和起因,这个题不是我哪篇文章看到的,也不是我瞎几把乱造出来的,我也没这个天赋和能力,是我同事之前丢到群里,叫我们在浏览器输出一下,对结果出乎意料,本着实事求是的精神,探寻事物的本 ...
- MySQL和Oracle中的隐式转换
今天在处理一个问题的时候,需要根据其他部门提供的sql语句对一个表中的数据进行了筛查. 语句类似下面的形式 > SELECT MAX_LEVEL,LOGOUT_TIME,CURRENT_DATE ...
- mysql日期隐式转换_mysql中的隐式转换
什么隐式类型转换? 在MySQL中: 当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.则会发生转换隐式 也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字.看到 ...
- mysql 隐式转换 索引_MySQL SQL优化之字符串索引隐式转换
之前有用户很不解:SQL语句非常简单,就是select * from test_1 where user_id=1 这种类型,而且user_id上已经建立索引了,怎么还是查询很慢? test_1的表结 ...
- mysql 关闭隐式转换_Mysql中的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引,下面分析两种隐式转换的情况看表结构phone为int类型,name为varchar类型 EXPLAIN ...
- scala中的隐式转换、隐式参数和隐式类
scala中的隐式转换.隐式参数和隐式类 @(SCALA)[scala] scala中的隐式转换隐式参数和隐式类 一隐式转换 1示例 2隐式转换的条件 二隐式参数 1示例 三隐式类 1示例 隐式转换是 ...
- oracle的int范围,oracle中int类型和number类型区别
oracle中int类型和number类型区别 INT类型是NUMBER类型的子类型. 下面简要说明: (1)NUMBER(P,S) 该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节 ...
最新文章
- linux安装中文环境,[Linux]Ubuntu 7.04 中文环境的安装
- .NET CF WM上创建快捷方式
- android局部布局替换,Android 局部布局替换的实现方式
- 2019中韩版权研讨会举行 网络成版权保护主战场
- ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(有舵机)
- 2017提高组D1T1 洛谷P3951 小凯的疑惑
- 论高校计算机信息管理能力的提升,论高校计算机信息管理能力的提升
- 达摩院年终发布:2022十大科技趋势
- SPSS(1)--安装hayes process插件及用Bootstrap方法进行中介效应检验
- pcsx2运行ps1_PS2模拟器PSX2设置及使用教程.doc
- 自己写个基金分析系统,准确率也太高了
- 现代计算机专业版官网,现代计算机期刊_投稿邮箱_杂志_编辑部_审稿_投稿须知...
- php 微信 公众 平台,微信公众平台代码详解-php语言(一)
- No1.初来乍到,请多指教
- 可参考的oa系统demo,抠图网站,机票界面,博客开发网站
- openwrt网络唤醒计算机,使用OpenWrt软路由唤醒网络设备
- 为什么一个手机有两个mac地址?
- HTML5标签+基础特性
- Windows 7 中文版命令行如何修改字符编码为UTF-8?
- 浅谈我对元宇宙、Web3、区块链与NFT的理解
热门文章
- ios 判断app程序第一次启动方法
- ASP.NET 2.0中改变passwordrecovery发邮件时的信息
- MATLAB的基础-虽然基础,但全是细节,掌握了这些细节,才是MATLAB高手
- python str byte编码_Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题...
- js网页如何获取手机屏幕宽度
- LeetCode--167--两数之和 II - 输入有序数组
- 数据库事务的四大特性以及事务的隔离级别
- 【初探移动前端开发02】移动设备的页面
- Linux有问必答:如何安装autossh
- CCF NOI1014 写评语