急!急!求varchar类型的字段的最大值

huangsizen 2003-12-25 10:59:58
字段名为no,类型为varchar.
如有数据如下: 100
1001
888
10020
现在我的问题是:求出该字段的最大值,如用“select max(no) from 表名”进行查询,则得到结果为888,但我想得到的结果是10020.

有结果马上结帖。
...全文
239 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangsizen 2003-12-25
  • 打赏
  • 举报
回复
好,马上结帖
qiaolin53 2003-12-25
  • 打赏
  • 举报
回复
varchar是字符型的,你对它max,得到的结果是按照字符的ANSI码进行比较的
例如
888和A比较,肯定是A>888
必须转换成数字型的再比较或求max
huangsizen 2003-12-25
  • 打赏
  • 举报
回复
victorycyz():你写的第一个可以,但第二个不可以,可不可以再写一个过来?
qiaolin53 2003-12-25
  • 打赏
  • 举报
回复
select max(convert(integer,字段)) from 表
jingxijun 2003-12-25
  • 打赏
  • 举报
回复
中海的方法好
改进一下 中海的:
select ltrim(rtrim(max(right(replicate(' ',1000)+ltrim(rtrim([no])),1000)))) from tablename
wuqiuzhi 2003-12-25
  • 打赏
  • 举报
回复
真是衰,没有看明白题意,呵呵!
我想是不是可以先选出里面长度最大的,保证是数字同时第一个是非0,然后再比较首字符最大的。
wuqiuzhi 2003-12-25
  • 打赏
  • 举报
回复
首先varchar的最大长度是8000,
另外:select max(datalen(no)) from yourtable
victorycyz 2003-12-25
  • 打赏
  • 举报
回复
避免溢出:
select max(right(replicate(' ',1000)+[no],1000)) from tablename
jingxijun 2003-12-25
  • 打赏
  • 举报
回复
select max(cast(no as DECIMAL)) 行不?
select max(cast(no as MONEY))
--MONEY介于 – 922,337,203,685,477.5808 到 922,337,203,685,477.5807 之间的符号整数。
zjcxc 元老 2003-12-25
  • 打赏
  • 举报
回复
select max(cast(no) as decimal(38,0))) from 表
victorycyz 2003-12-25
  • 打赏
  • 举报
回复
select max(cast([no] as bigint)) from tablename
huangsizen 2003-12-25
  • 打赏
  • 举报
回复
不行,如有数据200312250001时,转换时发生错误,"varchar值'200312250001'的转换溢出了int列
jingxijun 2003-12-25
  • 打赏
  • 举报
回复
select max(cast(no as int)) from 表名

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧