mysql的varchar转换int
表中有一字段是varchar类型,但是都是存的数字,比如,1,5,20,30之类,我现在orderby这个字段,但是结果并不是按照数字的大小顺序排的,有什么办法能在写sq...
表中有一字段是varchar类型,但是都是存的数字,比如,1,5,20,30之类,我现在order by这个字段,但是结果并不是按照数字的大小顺序排的,有什么办法能在写sql语句时让这个字段转换成int后排序么。不要说什么cast,convert,这些我都试过,不能用,只能在char和int之间转换。
这位仁兄解决了我的大问题啊,我写的是cast(name,int)为什么不行啊,写signed是啥意思 展开
这位仁兄解决了我的大问题啊,我写的是cast(name,int)为什么不行啊,写signed是啥意思 展开
展开全部
+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]
试过了是正确的
希望对您有所帮助
比如:`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]
试过了是正确的
希望对您有所帮助
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询