sql 将 varchar 值转换为数据类型为 int 的列时发生语法错误 的解决办法

jackxiang 2009-11-19 16:39 | |
group表有个varchar 的字段groupPower,值为1,2,3,4,有个sql语句为
select * from dbo.function where
functionId in
(
select groupPower from dbo.group
where groupid=1
)

执行出错将 varchar 值 '1,2,3,4' 转换为数据类型为 int 的列时发生语法错误。
解决方法:
将where 条件改为:

where charindex(rtrim(functionId), (select top 1 groupPower from loan_group where groupid=1 ))>0
就ok了!

CHAR类型都有个最大长度,超过长度的无法保存,不够长度留空。VARCHAR也有一个最大长度,但是当数据长度不够的时候,按照实际数据长度分配空间,少浪费,但查询的时候效率有影响。

SQL中enum、varchar、int+join查询速度比较 :
http://unix-cd.com/vc/www/26/2009-04/13675.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2247/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2009-11-19 16:42
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]