varchar 值 'select ' 转换为数据类型为 int 的列时报错
来源:互联网 发布:手机淘宝活动怎么报名 编辑:程序博客网 时间:2024/05/17 08:39
If Exists(select name from sysobjects where name = 'pagecourr' and type = 'P')
drop proc pagecourr
Go create proc pagecourr(
@pagesize int=12,
@database nvarchar(50)='',
@sql nvarchar(200)=''
)
as
set @sql='select top '+@pagesize+' * from '+@database+' order by id'
execute sp_executesql @sql
原因:因为“+”运算符后面跟着的是int,所以编译器认为是数学计算,所以尝试对第一个表达式进行转型,在数学运算和文本连接两者间,数学运算是具有高优先级的
拓展:当两个不同数据类型的表达式用运算符组合后,数据类型的优先顺序规则确定哪种数据类型要向另一种转换。优先顺序低的数据类型向优先顺序高的数据类型转换。如果此转换不是所支持的固有转换,则返回错误。当两个操作数表达式有相同的数据类型时,运算的结果就为那种数据类型。
数据类型的优先顺序(从高到低):
sql_variant(最高)、datetime、smalldatetime、float、real、decimal
money、smallmoney、bigint、int、smallint、tinyint、bit、ntext、text
image、timestamp、uniqueidentifier、nvarchar、nchar、varchar、char
varbinary、binary(最低)
解决方案:
用convert(数据类型,变量或字符串)或者是cast(@变量 as varchar(20))进行数据类型转换。
- varchar 值 'select ' 转换为数据类型为 int 的列时报错
- 将VARCHAR值""转换为数据类型为"int"的列时发生语法错误!的解决方法
- 将 varchar 值 'null' 转换为数据类型为 int 的列时发生语法错误。
- varchar 值 '1,220,52转换为数据类型为 int 的列时发生语法错误
- 将 varchar 值 '1,2,3' 转换为数据类型为 int 的列时发生语法错误
- 解决SQL将varchar值转换为数据类型为int的列时发生语法错误
- 解决SQL将varchar值转换为数据类型为int的列时发生语法错误
- SQL Server中类型转换(将varchar值转换为数据类型为int的列时发生语法错误)
- 将 varchar 值 'False' 转换为数据类型为 bit 的列时发生语法错误时处理
- varchar转换为int
- MySQL varchar转换为int
- Sql Varchar转换为Int
- swift 数据类型转换 string 转换为 int, int转换为string 等等 string转换为nsmutablestring
- varchar字符型转换为 int 型 ..再进行计算
- 数据库异常 从varchar转换为int出错[0x80040a07]
- sql将varchar类型转换为Int类型排序
- sqlserver中将varchar类型转换为int型
- sqlserver中将varchar类型转换为int型再进行排序的方法
- 学习笔记10 线程正在终止
- iPhone开发重构:提取类以构成模板模式
- Perl & PWL笔记
- ARM MMU工作原理剖析
- 三个经典故事改变人生
- varchar 值 'select ' 转换为数据类型为 int 的列时报错
- 媒体称目前100万元购买力相当33年前15万
- 程序员技术练级攻略
- Linux的使用
- 关于ARM中程序的zi,rw,ro段的解析
- Eclipse中节省时间的技巧
- 逃回北上广背后的“文化围城”
- 2440INIT.S剖析
- extern用法详解(转)