SQL表单提示"从数据类型varchar转换为int时出错"
var sql = " select a.youxq "
+ " from spkc a (nolock) "
+ " where a.youxq between 0 and 24 "
已知spkc表中的youxq字段为varchar(10)型,且表中此字段的值有带小数的,如"1.5"
试过将a.youxq改为cast(a.youxq as int)或convert(int,convert(numeric(18,9),a.youxq)),均提示同类错误,求语句如何改。
1ãvarcharæ¯å符串类åï¼èintæ¯æ°åæ´åãvarcharç±»åå¯ä»¥åå¨ä»»æå符ï¼èintåªè½åå¨æ°åæ´åæ以ä¼æ¥éï¼
2ãä½ å¯ä»¥å°intç±»å转æ¢ä¸ºvarcharç±»åï¼å 为varcharå¯ä»¥åå¨ä»»æçå符ï¼ä¾å¦ï¼123ï¼ä¸ç¾äºåä¸ï¼ä½intç±»åï¼å½ä½ å°123转为varcharç±»åä¹åå°±åæäº123ï¼ä¸äºä¸ï¼ãå¦æä½ è®²ABC varcharç±»å转æ¢ä¸ºABC intç±»åæ¶æ¯æ æ³è½¬æ¢çï¼
2ãä½ å¯ä»¥å°intç±»å转æ¢ä¸ºvarcharç±»åï¼å 为varcharå¯ä»¥åå¨ä»»æçå符ï¼ä¾å¦ï¼123ï¼ä¸ç¾äºåä¸ï¼ä½intç±»åï¼å½ä½ å°123转为varcharç±»åä¹åå°±åæäº123ï¼ä¸äºä¸ï¼ãå¦æä½ è®²ABC varcharç±»å转æ¢ä¸ºABC intç±»åæ¶æ¯æ æ³è½¬æ¢çï¼
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-08-09
字段的值有带小数,肯定不能as int ,改成cast(a.youxq as float)就可以了
第2个回答 推荐于2017-09-22
var sql = " select a.youxq "
+ " from spkc a (nolock) "
+ " where cast(a.youxq as float) * 100 between 0 and 240 "追问
+ " from spkc a (nolock) "
+ " where cast(a.youxq as float) * 100 between 0 and 240 "追问
试过了,提示"从数据类型varchar转换为float时出错"
追答那你的列数据还是有非数字字符类型数据存在,你好好看看
你不可能 cast ‘aaa’ 为数字的
第3个回答 2014-08-09
between 0.0 and 24.0看看追问
试过了,提示"错误原因:Data truncation"