例如 varchar 类型的字段 存放的值是:57,127 在比较的时候127要比57大,我用max函数查询出来的是57,请问有什么改进的办法吗?
sqlserver 比较
------解决方案--------------------
存储数字就该用 int,用 varchar 只好 convert(int, field)了,自讨苦吃了
------解决方案--------------------
是这样吗:
declare @t table(id int,v varchar(30))
insert into @t
select 1, '57,127' union all
select 2, '125,98'
select id,
v,
max(cast(SUBSTRING(t.v, number ,CHARINDEX(',',t.v+',',number)-number) as int)) max_value
from @t t,master..spt_values s
where s.number >=1
and s.type = 'P'
and SUBSTRING(','+t.v,s.number,1) = ','
group by id,v
/*
id v max_value
2 125,98 125
1 57,127 127
*/
------解决方案--------------------
需要先拆分,然后转化为数字类型,然后求max值
------解决方案--------------------
把值拆成列来对比