Страница 1 из 1

select max(varchar)

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

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

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

Добавлено: 24 май 2007, 18:38
Attid

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

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

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

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

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