select max(varchar)

Модераторы: kdv, CyberMax

Ответить
Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

select max(varchar)

Сообщение Solo » 24 май 2007, 17:27

в таблице номера содержатся в поле NDOC типа varchar (длина 6)
Но содержатся в нем только цифровые значения:
000123
000124
000156
...
008456 и т.д.

При запросе select max(insured.ndoc) from insured это дело будет работать нормально, как с числовыми значениями или нет?
То-есть между 001000 и 000808 будет ли выбор 001000?

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 24 май 2007, 17:56

И вообще, как перевести строку в число и обратно, никогда вот не сталкивался и не могу в релизнотсе найти. Вроде паскалевских IntToStr b StrToInt

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 24 май 2007, 18:38

Код: Выделить всё

cast(pole1 as integer)
cast(pole1 as varchar(10))

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 24 май 2007, 18:57

Для строк, выровненных нулями до одинаковой длины, любые сравнения, как и нахождения макс/мин, равноценны целочисленным сравнениям.

Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Сообщение Solo » 25 май 2007, 08:38

WildSery писал(а):Для строк, выровненных нулями до одинаковой длины, любые сравнения, как и нахождения макс/мин, равноценны целочисленным сравнениям.
Именно выровненными. Там даже триггер специально за этим следит. То-есть, я могу искать макс так же, как и в Integer - поле, да? Это хорошо

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 25 май 2007, 08:51

Solo писал(а):То-есть, я могу искать макс так же, как и в Integer - поле, да?
Это следствие выровненности и того, что код символа "0" меньше кода символа "1" и т.д.

Ответить