max语句中的where子句

时间:2013-02-19 08:12:42

标签: sql

如何添加查询位置,转换或替换或最大值!

max(convert(int,replace(( QueueNum ),'-',''))) from [Queue]

我想在QueueNum的where子句中返回有特殊内容的记录的最大值。

已编辑:

数据:

1981-1-1232
1981-1-1235
1981-1-1234
1981-2-1
1981-2-2
1981-2-13

如何返回以1981-2

开头的正常记录的最大值

4 个答案:

答案 0 :(得分:0)

不确定我是否给出了一个好答案,但您可以将查询编写为

Select max(MyValue) from (Select Convert(int, replace((QueueNum),'-','')) as MyValue from [Queue]) MyTable 

它的作用是在内存中创建一个临时表,该表是一列MyValue和Int类型,然后从该表中找到Max。我注意到有时候“MyTable”[table alias]在这样的查询中很重要,特别是在SQl Server上执行。

答案 1 :(得分:0)

将您的条件置于子句

答案 2 :(得分:0)

这是你想要的吗?

SELECT MAX(CONVERT(INT, REPLACE((QueueNum),'-','')))
FROM Queue
WHERE QueueNum LIKE '1981-2%'

SQLFiddle

答案 3 :(得分:0)

我猜这是MSSql数据库,在这种情况下尝试使用以下语句而不进行任何转换:

SQLfiddle demo

select TOP 1 
QueueNum
from Queue where QueueNum like '1981-2-%'
order by LEN(QueueNum) desc, QueueNum desc