根据数据类型在SQL中获取Max for field

时间:2016-10-18 09:31:00

标签: sql select sql-server-2008-r2 max

我想在SQL中获取字段的MAX。该字段采用数字和非数字字符。如果该字段具有值A,B,C,则结果应为C.但是当该字段具有例如A,B,C,1,2时,结果应为2。 有人可以帮助我如何实现这个目标吗?

谢谢

See Image

4 个答案:

答案 0 :(得分:1)

这有效

SELECT TOP 1 IDValue
FROM
(
SELECT 'A' as IDValue, ISNUMERIC('A') tag
UNION
SELECT 'C', ISNUMERIC('C')
UNION
SELECT 'B', ISNUMERIC('B')
UNION
SELECT '1',ISNUMERIC('1')
UNION
SELECT '2',ISNUMERIC('2')
)tmp
ORDER BY tag DESC,IDValue DESC

输出

2

如果表达式为数字,则

ISNUMERIC()返回1,否则返回0。您可以在ORDER BY中使用它来获取最大值。

答案 1 :(得分:1)

试试这个:可以在某种程度上解决你的问题

DECLARE @T TABLE(data VARCHAR(2))
INSERT INTO @T VALUES('A'),('B'),('C'),('1'),('2')

SELECT TOP(1) data
FROM @T
ORDER BY CASE WHEN ISNUMERIC(data)=1 
              THEN 'Z'+data
              ELSE data 
         END desc

答案 2 :(得分:0)

这是使用SQL

查找最大值的语法
SELECT MAX(column_name) FROM table_name;

您可以参考http://www.w3schools.com/sql/sql_func_max.asp进一步阅读和代码测试

答案 3 :(得分:0)

进行条件排序

select n from
(
select '1' as n union all
select '2' as n union all
select 'A' as n union all
select 'B' as n union all
select 'C' as n 
) t
order by case when isnumeric(n)=1 then 1 else 2 end,n desc



select n from
(
select 'A' as n union all
select 'B' as n union all
select 'C' as n 
) t
order by case when isnumeric(n)=1 then 1 else 2 end,n desc