2015-02-04 2 views
-1

У меня есть таблица:Weird поведение в мин функции TSQL

ID  Code 
647  1026836 
248289 1026836 
250080 1026836 

Я стараюсь, чтобы получить мин ID:

SELECT min(rtrim(id)) , 
      Code 
    FROM  [XXX] 
    where Code = '1026836' 
    GROUP BY Code 

результат:

ID  Code 
248289 1026836 

Почему? Она должна дать:

ID Code 
647 1026836 
+2

Просто боковое: Почему вы используете числовое значение? (Является ли это числовым?) – Pred

ответ

1

фигу:

min(cast(id as bigint)) 

сделал трюк, как было Ид NVARCHAR

+1

[Плохие привычки пинать: выбор неправильного типа данных] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using- the-wrong-data-type.aspx) - вы всегда должны использовать наиболее подходящий тип данных - вот для чего они нужны, в конце концов! –

2

Проверьте свои типы данных! Возможно, он выполняет min() для нецифрового типа данных. Вам не нужно обрезать числовой тип данных.

Смежные вопросы