比如:`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]
试过了是正确的
希望对您有所帮助
写个存储过程吧,我这里只有sql server的测试环境,我照着语法改成mysql的,没法测试如果有问题再问
create proc testas
begin
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 表名 where MODEL_ID=@i))
select @i=@i+1
update 表名 set MODEL_ID=@i
where MODEL_NAME =
(select MODEL_NAME from 表名 where MODEL_ID=-1 limit 1)
end
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)