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