请教int与varchar如何转换成int之间的一个转换问题

您当前所在位置:&>>&&>>&正文
注意:既使b类不可以转换为A类,使用is做判断的时候,是可以通过编译的,也不会抛出异常,只是会给出提
重要:SQL中int类型与varchar类型的隐式转换
创建时间:日 23:09&&阅读次数:(13067)
如果你对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.1union&allselect&1,1.1&union&all&select&2,2.2union&all&select&3,3.3我们来猜猜下面Select语句的结果select&*&from&#table1&where&col1&&&''心细的朋友可能要说了,上面这个SQL肯定报错啊,col1是int类型,怎么能和''这个varchar类型的值来比较了。但是朋友你错了,上面的SQL是能够查出结果集的,查询结果如下:id&&col1&col22&&&&1&&&&1.13&&&&2&&&&2.24&&&&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&&&02,将''与decimal列对比,会报错类型转换错误。注意:以上所有代码小编均在SQL&SERVER2005中测试,其它版本未测试过.
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
感谢您的支持,我会做的更好!
扫码打赏,您说多少就多少
发表评论:
请输入问题&&的结果(结果是:)3307人阅读
数据库(14)
如果我们数据库的ID设置为varchar型的 在查询的时候order by id的话我们是不希望看到如下情况的。
我们可以把varchar转换为int 然后进行排序
select * from yourtable order by cast(yourcol as int);
适用于SQLServer Oracle
select * from yourtable order by convert(int,yourcol);
仅适用于SQLServer
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
需要交换友链的请留言
访问:2650065次
积分:36017
积分:36017
排名:第135名
原创:643篇
转载:23篇
译文:26篇
评论:1602条2011年8月 挨踢职涯大版内专家分月排行榜第一2011年3月 扩充话题大版内专家分月排行榜第一2011年2月 扩充话题大版内专家分月排行榜第一2011年2月 挨踢职涯大版内专家分月排行榜第一2011年1月 扩充话题大版内专家分月排行榜第一2010年12月 扩充话题大版内专家分月排行榜第一2010年12月 挨踢职涯大版内专家分月排行榜第一2010年8月 挨踢职涯大版内专家分月排行榜第一
2012年9月 扩充话题大版内专家分月排行榜第二2011年11月 扩充话题大版内专家分月排行榜第二2011年10月 扩充话题大版内专家分月排行榜第二2011年9月 挨踢职涯大版内专家分月排行榜第二2011年7月 挨踢职涯大版内专家分月排行榜第二2011年4月 挨踢职涯大版内专家分月排行榜第二2010年6月 挨踢职涯大版内专家分月排行榜第二
2010年1月 MS-SQL Server大版内专家分月排行榜第二2009年11月 MS-SQL Server大版内专家分月排行榜第二
2012年10月 MS-SQL Server大版内专家分月排行榜第三2010年7月 MS-SQL Server大版内专家分月排行榜第三2010年3月 MS-SQL Server大版内专家分月排行榜第三2010年2月 MS-SQL Server大版内专家分月排行榜第三2009年8月 MS-SQL Server大版内专家分月排行榜第三
2013年4月 MS-SQL Server大版内专家分月排行榜第二
2012年5月 MS-SQL Server大版内专家分月排行榜第三
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。mysql 把int转换为varchar怎么实现_百度知道
mysql 把int转换为varchar怎么实现
我有更好的答案
select cast(1 as char(8));
+--------------------+| cast(1 as char(8)) |+--------------------+| 1
| +--------------------+1 row in set (0.00 sec)
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。int和varchar转换比较的有关问题 - Sql Server当前位置:& &&&int和varchar转换比较的有关问题int和varchar转换比较的有关问题www.MyException.Cn&&网友分享于:&&浏览:47次int和varchar转换比较的问题有两个段:student_id是int类型,service_student是varchar类型,现在想做的是比较student_id与service_student的值,如果student_id在service_student中,则输出对应的student_id。
问题:怎样写语句来确认student_id的值在service_student中有相应值对应?
如:student_id= '109 ' & service_student= '107,109,108 '
新手上路,请大虾们不吝赐教!------解决方案--------------------select
charindex(
', '+rtrim(student_id)+ ', ' ,
', '+service_student+ ', ' ) &
------解决方案--------------------select
where charindex(
', '+convert(varchar,student_id)+ ', ' ,
', '+service_student+ ', ' ) &
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有}

我要回帖

更多关于 mysql varchar转换int 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信