首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sqlserver, 比较字符串, 界别长度

2013-11-19 
sqlserver, 比较字符串, 区分长度例如 varchar 类型的字段 存放的值是:57,127 在比较的时候127要比57大,我

sqlserver, 比较字符串, 区分长度
例如 varchar 类型的字段 存放的值是:57,127 在比较的时候127要比57大,我用max函数查询出来的是57,请问有什么改进的办法吗? sqlserver 比较
[解决办法]
存储数字就该用 int,用 varchar 只好 convert(int, field)了,自讨苦吃了
[解决办法]

引用:
嗯 ,之前没有考虑到这个问题,但是现在数据库设计改动的代价比较大,所以只能通过复杂的方法查询出这种效果了。

Quote: 引用:

存储数字就该用 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
/*
idv    max_value
2125,98125
157,127127
*/

[解决办法]
需要先拆分,然后转化为数字类型,然后求max值
[解决办法]
把值拆成列来对比

热点排行