请问如何查询varchar类型字段的最大值(字母数字混合的)

lvloj 2006-08-31 02:50:28
查询一个字段的最大值可以用
SELECT ISNULL(MAX(Code),0) Code FROM DocTable, 但结果不是我想要的.
比如现在[Code]字段如果有'999'和'1000'二个值, 我希望结果是返回'1000', 但查询返回的是'999', 而且字段可能会包含字母比如'X123', 不能转换成Int或其他数值类型来查询.

请问如何做才能返回正确的最大值呢.
...全文
489 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
achongsky 2006-08-31
  • 打赏
  • 举报
回复
带字母的需要比较么?X123和1000谁大?,如果带字母的可以排除不考虑,那LS的答案就可以。
lvloj 2006-08-31
  • 打赏
  • 举报
回复
可以了, 我刚才的测试有点问题.
WangZWang 2006-08-31
  • 打赏
  • 举报
回复
SELECT max(case when isNumeric(Code)=0 then 0 else cast(Code as bigint) end) code FROM DocTable
lvloj 2006-08-31
  • 打赏
  • 举报
回复
谢谢楼上的, 不过你们的查询结果都是数据库里面没有的奇怪数值, 不能用阿...
九斤半 2006-08-31
  • 打赏
  • 举报
回复
int=>bigint,不然很容易发生溢出错误的

例如:20050921003

SELECT ISNULL(MAX(cast(Code as bigint)),0) Code FROM DocTable
WHERE ISNUMERIC(CODE)=1
tanqimin 2006-08-31
  • 打赏
  • 举报
回复
SELECT
ISNULL(MAX(cast(Code as int)),0) Code
FROM
DocTable
九斤半 2006-08-31
  • 打赏
  • 举报
回复
SELECT ISNULL(MAX(cast(Code as int)),0) Code FROM DocTable
WHERE ISNUMERIC(CODE)=1
九斤半 2006-08-31
  • 打赏
  • 举报
回复
SELECT ISNULL(MAX(cast(Code as int)),0) Code FROM DocTable
wgsasd311 2006-08-31
  • 打赏
  • 举报
回复
--try
SELECT MAX(cast(Code as bigint)) Code FROM DocTable where isdate(code)=1

34,590

社区成员

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

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