0

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

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

4 回答 4

0

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

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

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

于 2013-02-19T08:17:32.287 回答
0

把你的条件放在条款中

于 2013-02-19T08:20:50.057 回答
0

这是你想要的吗?

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

SQLFiddle

于 2013-02-19T08:21:28.823 回答
0

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

SQLfiddle 演示

select TOP 1 
QueueNum
from Queue where QueueNum like '1981-2-%'
order by LEN(QueueNum) desc, QueueNum desc
于 2013-02-19T08:27:55.223 回答