sql转换成数据类型int时失败
㈠ sql锛氩皢鏁版嵁绫诲瀷 varchar 杞鎹涓 int 镞跺嚭阌欍
棣栧厛@sql2镄勭被鍨嬮敊浜嗭纴绗浜孈column2镄勭被鍨嬩篃涓嶅癸纴绗涓夛纴鍦ㄥ姩镐佽鍙ヤ腑娌℃湁鍦╢rom鍓嶉溃锷犵┖镙硷纴鍏舵★纴锷ㄦ佺殑璇濈敤sp_executesql镄勮瘽锛屼竴娆′袱鍙ユ槸涓嶈岀殑锛屾敼鎴愯繖镙凤细
alter procere select_column1
@column1 nvarchar(10),@column2 nvarchar(10)
as
begin
declare @sql1 nvarchar(200),@sql2 nvarchar(200)
set @sql1='select '+@column1+' from course1'
set @sql2='select '+@column2+' from course1'
exec sp_executesql @sql1
exec sp_executesql @sql2
end
铹跺悗
exec select_column1 'cname','ccredit'
鏋勬灦锷ㄦ佽鍙ョ殑镞跺欑敤nvarchar濂
.....鎴戠煡阆揷credit瀛楁电殑鏁版嵁鏄痠nt鍨嬶纴浣嗕綘浼犲埌瀛桦偍杩囩▼镄勬槸瀛楁电殑钖嶅瓧锛屸榗rredit钬椤綋铹惰佺敤char鍨嬨
浣犳妸鎴戜笂闱㈤偅涓娈靛嶅埗鍒皊ql閲岃繍琛屼竴涓嫔氨鐭ラ亾浜
㈡ sql server的isnumeric()函数问题!
你这个出错的原因是 返回的列的数据类型不一样。
CASE
WHEN isnumeric(天数)=1 then 天数
else 0
END
例如天数是 ‘7.5’, 那么上面的语句, 返回 天数, 数据类型是 varchar 的
如果天数是 'abc' , 那么上面的语句, 返回 0, 数据类型是 int 类型的。
数据类型不一样了, 因此, 那么 数据库会尝试, 把 varchar 类型的 天数, 转换为 int
以确保 返回的数据类型一样。
所以
在将 varchar 值 '7.5' 转换成数据类型 int 时失败。
else 0 改成 '0' 就不报错
是因为这个情况下, 两种情况, 返回的数据类型, 都是 varchar 类型的。
不需要做任何数据转换, 因此不会出错。
㈢ SQL初级问题数据库在将varchar值 '.. ' 转换成数据类型 int 时失败 的问题
insert into Proct (Pname,PSum, PPrice,CId) values('冰箱',300,4000,1),('洗衣机',200,2300, 1)
把pid换成pname就行了,我估计你是笔误了吧
㈣ SQL:在将 varchar 值 '' 转换成数据类型 int 时失败。
SQL语句中的值跟数据库表中字段的数据类型不匹配。
要是转为varchar是可以转回来的,但是转为了char类型,所以就转不回来了,因为char类型有个长度,不足这个长度的会用空格填充,所以一个数字多了很多个空格后就不是合法的数值格式了。
结果再 用相同语句想把类型转回smallint,就报错在将 varchar 值 '*' 转换成数据类型 int 时失败,注意 :字符varchar转数据类型int和数据类型int转字符vachar的语句是不同的。
varchar特点:
1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。
2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。
3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
4、5.0以上版本,取值或设置值都会保存字符串末尾的空格,4.1之前的版本都会把字符串末尾的空格删除掉。
5、最大长度远大于平均长度,很少发生更新的时候适合使用varchar,因为碎片更少了。
以上内容参考:网络-varchar