简单的问题在线等

huejim 2004-11-04 12:05:52
表名:table1
id a
1 aa-324-234
2 aa-324-2341
3 aa-324-23411
4 aa-324-234111
5 aa-324-23
6 b-34-234322
7 cxv-32423-1
8 xx-234-2344234234
9 sdfd-12321-111111111111111111
10 234-2342-123

我想得到table1里的a字段里的右边第3个“-”间隔数值最大的值

SELECT DISTINCT MAX(a) AS Expr1
FROM (SELECT DISTINCT
MAX(RIGHT(RIGHT(a, LEN(a) - CHARINDEX('-', a)), LEN(RIGHT(a, LEN(a)
- CHARINDEX('-', a))) - CHARINDEX('-', RIGHT(a, LEN(a) - CHARINDEX('-', a)))))
AS a
FROM TABLE1
GROUP BY a) DERIVEDTBL
GROUP BY a

这种方法为什么得不到呢?

最终的结果应该是111111111111111111。请高手求救 啊

...全文
66 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
select max(convert(decimal(38,0),reverse(left(reverse(a)
,charindex('-',reverse(a))-1
)
)

)
)
from t
huejim 2004-11-04
  • 打赏
  • 举报
回复
谢谢呀,不过不对呀,得到的是 1997566484,而不是111111111111111111??
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
用最后这个
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
select max(binary_checksum(reverse(left(reverse(a)
,charindex('-',reverse(a))-1
)
)
)
)
from t
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
select cast(reverse(left(reverse('aa-324-234')
,charindex('-',reverse('aa-324-234'))-1
)
)
as int
)
huejim 2004-11-04
  • 打赏
  • 举报
回复
英雄,不行呀,麻烦你再看看好吗
huejim 2004-11-04
  • 打赏
  • 举报
回复
那用哪种类型?
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
:((( 不行 int 超出长度了
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
select max(cast(reverse(left(reverse(a+'-'),charindex('-')-1)) as int)
from t
huejim 2004-11-04
  • 打赏
  • 举报
回复
补:id是自增,a是varchar(50)
huejim 2004-11-04
  • 打赏
  • 举报
回复
执行上面的SQL语句出来的是:
1
111111111111111111
123
23
234
2341
23411
234111
234322
2344234234
我只想出来111111111111111111这个就可以了的
huejim 2004-11-04
  • 打赏
  • 举报
回复
好的,谢谢啦
lsxaa 2004-11-04
  • 打赏
  • 举报
回复
上面不能超过38位,超过还会有问题

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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