日期:2014-05-18  浏览次数:20612 次

文本类型转数字类型
SQL code
select id,sh,[name],CAST(vote as int),hot,sex,age...order by vote desc


Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'CAST(vote as int)' 中。

为什么会这样呢?
我是想把一个文本类型主键转换为数字类型 然后用这个主键排序

???

------解决方案--------------------
SQL code
select id,sh,[name],CAST(vote as bigint),hot,sex,age...order by vote desc

------解决方案--------------------
http://topic.csdn.net/t/20021025/10/1123934.html
------解决方案--------------------
SQL code
In   Access   ,U   can   use   following   convert   fun   
  Just   as:   
  SELECT   CDbl(Field1)   +   CDbl(Field2)   FROM   My_Tbl   WHERE   Id=1   
  类型转换函数   
                
    
  每个函数都可以强制将一个表达式转换成某种特定数据类型。   
    
  语法   
  CBool(expression)   
    
  CByte(expression)   
    
  CCur(expression)   
    
  CDate(expression)   
    
  CDbl(expression)   
    
  CDec(expression)   
    
  CInt(expression)   
    
  CLng(expression)   
    
  CSng(expression)   
    
  CStr(expression)   
    
  CVar(expression)   
    
  CStr(expression)   
    
  必要的   expression   参数可以是任何字符串表达式或数值表达式。   
    
  返回类型   
  函数名称决定返回类型,如下所示:   
    
  函数   返回类型   expression   参数范围     
  CBool     Boolean   任何有效的字符串或数值表达式。     
  CByte     Byte   0   至   255。     
  CCur   Currency   -922,337,203,685,477.5808   至922,337,203,685,477.5807。     
  CDate   Date   任何有效的日期表达式。     
  CDbl   Double     负数从   -1.79769313486231E308   至   -4.94065645841247E-324;正数从   4.94065645841247E-324   至   1.79769313486232E308。     
  CDec   Decimal   零变比数值,即无小数位数值,为     
  +/-79,228,162,514,264,337,593,543,950,335。对于   28   位小数的数值,范围则为     
  +/-7.9228162514264337593543950335;最小的可能非零值是   0.0000000000000000000000000001。     
  CInt   Integer   -32,768   至   32,767,小数部分四舍五入。     
  CLng   Long   -2,147,483,648   至   2,147,483,647,小数部分四舍五入。     
  CSng   Single   负数为   -3.402823E38   至   -1.401298E-45;正数为   1.401298E-45   至   3.402823E38。     
  CStr   String   依据   expression   参数返回   Cstr。     
  CVar   Variant   若为数值,则范围与   Double   相同;若不为数值,则范围与   String   相同。     
    
    
    
  说明   
  如果传递给函数的   expression   超过转换目标数据类型的范围,将发生错误。   
    
  通常,在编码时可以使用数据类型转换函数,来体现某些操作的结果应该表示为特定的数据类型,而不是缺省的数据类型。例如,当单精度、双精度或整数运算发生的情况下,使用   CCur   来强制执行货币运算。   
    
  应该使用数据类型转换函数来代替   Val,以使国际版的数据转换可以从一种数据类型转换为另一种。例如,当使用   Ccur   时,不同的小数点分隔符、千分位分隔符和各种货币选项,依据系统的区域设置都会被妥善识别。   
    
  当小数部分恰好为   0.5   时,Cint   和   CLng   函数会将它转换为最接近的偶数值。例如,0.5   转换为   0、1.5   转换为   2。Cint   和   CLng   函数不同于   Fix   和   Int   函数,Fix   和   Int   函数会将小数部分截断而不是四舍五入。并且   Fix   和   Int   函数总是返回与传入的数据类型相同的值。   
    
  使用   IsDate   函数,可判断   date   是否可以被转换为日期或时间。Cdate   可用来识别日期文字和时间文字,以及落入可接受的日期范围内的数值。当转换一个数字成为日期时,是将整数部分转换为日期,小数部分转换为从午夜起算的时间。   
    
  CDate   依据系统上的区域设置来决定日期的格式。如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。另外,长日期格式,若包含有星期的字符串,也不能被识别。   
    
  CVDate   函数也提供对早期   Visual   Basic   版本的兼容性。CVDate   函数的语法与   CDate   函数是完全相同的,不过,CVDate   是返回一个   Variant,它的子类型是   Date,而不是实际的   Date   类型。因为现在已有真正的   Date   类型,所以   CVDate   也不再需要了。转换一个表达式成为   Date,再赋值给一个   Variant,也可以达到同样的效果。也可以使用这种技巧将其他真正的数据类型转换为对等的   Variant   子类型。   
    
  #############注意   CDec   函数不能返回独立的数据类型,而总是返回一个   Variant,它的值已经被转换为   Decimal   子类型。

------解决方案--------------------
探讨
??? 谁能说下
就是文本主键 age 转换成数字 并用他排序
用文本排序是这样的 60 5 48 。。。
必须转成数字。。。

------解决方案--------------------
ODBC Microsoft Access Driver
楼主的是ACCESS,不能使用cast函数,请使用cint

SQL code