mysql的varchar转换int

表中有一字段是varchar类型,但是都是存的数字,比如,1,5,20,30之类,我现在order by这个字段,但是结果并不是按照数字的大小顺序排的,有什么办法能在写sql语句时让这个字段转换成int后排序么。不要说什么cast,convert,这些我都试过,不能用,只能在char和int之间转换。
这位仁兄解决了我的大问题啊,我写的是cast(name,int)为什么不行啊,写signed是啥意思

第1个回答  推荐于2017-04-22
+0咯

比如:`server_id` varchar(2) NOT NULL default '',
手动转化类型:
select server_id from cardserver where game_id = 1 order by server_id+0 desc limit

楼主说cast,convert不行 这应该不可能 不知道楼主的用法用对了么?
使用MySQL函数CAST/CONVERT:
select server_id from cardserver where game_id = 1 order by CAST(server_id as SIGNED) desc limit 10;

select server_id from cardserver where game_id = 1 order by CONVERT(server_id,SIGNED) desc limit 10;

问题补充:
不是用cast(name,int)
cast的用法不是这样的
cast跟convert的用法如下 呵呵 这个可以参考资料 希望楼主查阅相关资料你就会知道拉
signed 后面还有个INTEGER 可以不写的 呵呵
用CAST函数或者CONVERT

CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)

CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

试过了是正确的
希望对您有所帮助本回答被提问者采纳

mysql如何将varchar转换为int类型?
将MySQL中的VARCHAR类型转换为INT类型,只需使用CAST函数。例如:这样,将xxx_field(原为VARCHAR类型)转换为无符号整型,并应用于排序。查询结果将按照整型排序,而非字符串排序。在实际业务中,如果SQL语句按照字符串排序,则1-11的排序结果如下:而按照整型排序,结果如下,不会让人为之困惑。

MySQL日常踩坑之varchar转换
表结构显示列nodeId为varchar类型,而SQL语句却返回了0作为结果。我开始对SQL语句进行猜测,最终发现,所有varchar类型的nodeId被隐式转换为了int,且只转换了第一个字符。这解释了为什么所有记录都显示为0的结果。我进一步观察了所有转换后的nodeId值,发现它们都与0相符。这是MySQL默认行为的结果。简单翻...

mysql的varchar转换int
+0咯 比如:`server_id` varchar(2) NOT NULL default '',手动转化类型:select server_id from cardserver where game_id = 1 order by server_id+0 desc limit 楼主说cast,convert不行 这应该不可能 不知道楼主的用法用对了么?使用MySQL函数CAST\/CONVERT:select server_id from cards...

mysql有唯一约束的列如何varchar转int
create proc testasbegin declare @i int update 表名 set MODEL_ID=-1 update 表名 set MODEL_ID=CONVERT(int,MODEL_NAME) where ISNUMERIC(MODEL_NAME)=1 while(exists(select 1 from 表名 where MODEL_ID=-1)) begin select @i=1001 while(exists(select 1 from ...

mysql 怎样取得varchar类型的数据的最大值
利用cast()函数,将varchar类型转换为integer类型。cast()函数用法:cast(数据名称 as 要转换的类型)CAST() 函数可用来获取一个值,并产生这个值的另一个类型的值。这个类型 可以是以下值其中的 一个:BINARY[(N)]CHAR[(N)]DATE DATETIME DECIMAL SIGNED [INTEGER]TIME UNSIGNED [INTEGER]

MySQL 时间类型与 INT、VARCHAR 等类型的相互转换
MySQL中,时间数据的存储和转换涉及到多种类型,如INT、VARCHAR和DATETIME。其中,NOW()函数返回当前的日期和时间,其结果可以转化为VARCHAR类型,便于存储和展示。例如:SELECT NOW() AS current_time; -- 输出格式为 'YYYY-MM-DD HH:MM:SS'而CURRENT_TIMESTAMP同样表示当前时间,其输出也为VARCHAR,...

mysql字段属性varchar改为int后 数据丢失
varchar 是字符类型 int是整型

mysql数字转字符串?
在MySQL中,处理数字与字符串之间的转换操作主要依赖于concat和cast函数。当你需要将整数Int转换为字符型varchar时,通常使用concat函数,如concat(8, '0')会返回字符串'80'。而对于将varchar类型的字符串转换为整数Int,cast函数就派上用场,如cast('123' as signed)。在MySQL中,类型转换规则与SQL ...

mysql varchar 转化为int型的问题
这个一般的情况下是要在程序中间做的,而不是在数据库层做的。

mysql中cast()函数是什么意思?
用于数据类型转换。如 cast(varchar as int) --把字符varchar转为int型

相似回答