group表有个varchar 的字段groupPower,值为1,2,3,4,有个sql语句为
执行出错将 varchar 值 '1,2,3,4' 转换为数据类型为 int 的列时发生语法错误。
解决方法:
将where 条件改为:
CHAR类型都有个最大长度,超过长度的无法保存,不够长度留空。VARCHAR也有一个最大长度,但是当数据长度不够的时候,按照实际数据长度分配空间,少浪费,但查询的时候效率有影响。
SQL中enum、varchar、int+join查询速度比较 :
http://unix-cd.com/vc/www/26/2009-04/13675.html
select * from dbo.function where
functionId in
(
select groupPower from dbo.group
where groupid=1
)
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
评论列表