powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Подскажите синтаксис преобразования типов?
22 сообщений из 22, страница 1 из 1
Подскажите синтаксис преобразования типов?
    #32917516
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32917635
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение.
Какой информикс 7-9?

а если select max(f*1)
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32917677
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Informix 7.30
а предложенный вариант, который, я так понимаю должен был заставить сервер сделать преобразование автоматически, не прошел
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32917698
onstat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На 9 делается так

select sum(fieldname::integer)
from tabname
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32917956
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anjey
предложенный вариант, который,
я так понимаю должен был заставить сервер сделать преобразование автоматически, не прошел

Что значит "не прошел"? Что произошло?
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918118
Enlighten me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
--IDS 7.31
create temp table abc (a char( 5 )) with no log ;
insert into abc values('1') ;

insert into abc values('2') ;
insert into abc values('3') ;
insert into abc values('4') ;
insert into abc values('5') ;
insert into abc values('6') ;
insert into abc values('7') ;

select max( 1  * a) from abc
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918307
Pidburtnyi Valentyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение.

select sum(cast(charfield as integer))
from Table

, что есть идентично тому, что советовал onstat
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918372
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pidburtnyi Valentyn anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение.
select sum(cast(charfield as integer))
from Table
, что есть идентично тому, что советовал onstat

Но ведь сказал же человек, что у него "Informix 7.30"
К чему тогда эти советы ? :))
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918657
Alevtin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я на 7.3 такие вещи делаю просто -
select max(наименование поля char) from таблица
Просходит автоматическое преобразование типов.
И что в этом случае не срабатывает.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918673
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlevtinЯ на 7.3 такие вещи делаю просто -
select max(наименование поля char) from таблица
Просходит автоматическое преобразование типов.
И что в этом случае не срабатывает.
и что во что преобразуется?
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918677
Alevtin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот только что еще раз проверил.
select max(mfo) from apbotd
поле mfo у меня имеет тип char - так что все работает.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918689
Alevtin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис AlevtinЯ на 7.3 такие вещи делаю просто -
select max(наименование поля char) from таблица
Просходит автоматическое преобразование типов.
И что в этом случае не срабатывает.
и что во что преобразуется?

А кто его знает ;-) но работает. Можно посидеть подумать, но лениво.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918748
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alevtin Журавлев Денис AlevtinЯ на 7.3 такие вещи делаю просто -
select max(наименование поля char) from таблица
Просходит автоматическое преобразование типов.
И что в этом случае не срабатывает.
и что во что преобразуется?

А кто его знает ;-) но работает. Можно посидеть подумать, но лениво.
Ну посиди и подумай.

create temp table abc (a char(5)) with no log ;
insert into abc values('1') ;

insert into abc values('2') ;
insert into abc values('3') ;
insert into abc values('04') ;
insert into abc values('5') ;
insert into abc values('6') ;
insert into abc values('7') ;
insert into abc values('1,5e+6') ;

сравни
select max(1 * a) from abc
select max(a) from abc
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32918780
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alevtin
Вот только что еще раз проверил.
select max(mfo) from apbotd
поле mfo у меня имеет тип char - так что все работает.


И у меня так работает!
если в apbotd содержится
строка со значением в mfo "2"
и строка со значением в mfo "10"
то возвращается "2". Наверно, хочется чтобы
вернулось "10".
Так что же произошло при
select max(f*1) ???
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32919177
Pidburtnyi Valentyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisНо ведь сказал же человек, что у него "Informix 7.30"
К чему тогда эти советы ? :))

Сори, не заметил.
:(
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32919827
anjey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, вот и у меня такая же история:
делаю select max(поле_типа_char), возвращается значение 1022, например, а в том же поле есть цифирки и побольше! например 10194. явно informix не числа сравнивал.... вот только что он сравнивал? не понятно

на вариант:
select max(cast(поле_char) получаю сообщение:
Routine (cast) can not be resolved.

на вариант:
select max(поле_char::integer) выдается сообщение:
A syntax error has occurred.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32920227
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anjey
вот только что он сравнивал? не понятно


Тупая машинка, думает, что если тип поля Char, то там символы-буковки.
А в машинку зашили правила( типа алфавита), что "А" меньше чем "Б".
И что особенно противно: "АБ" меньше чем "Б".
В этом же алфавите есть и символы "1", "2", "3", "4" и т.д.
И получается, что набор символов "12" меньше чем набор символ "2" !

Но я считаю, что не надо особенно на этом зацикливаться и глубоко в это вдумываться, а надо выполнить запрос:

select max(поле_типа_char * 1) from _таблица_

Если результат не удовлетворит, то написать сюда, о том что
именно произошло
:)
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32920614
ladyirina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anjeyвот, вот и у меня такая же история:
делаю select max(поле_типа_char), возвращается значение 1022, например, а в том же поле есть цифирки и побольше! например 10194. явно informix не числа сравнивал.... вот только что он сравнивал? не понятно


Сравнивал 2 строки лексокографически.
1022>_{lex} 10194
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32921737
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olleg anjey
вот только что он сравнивал? не понятно

Тупая машинка, думает, что если тип поля Char, то там символы-буковки.
А в машинку зашили правила( типа алфавита), что "А" меньше чем "Б".
И что особенно противно: "АБ" меньше чем "Б".
В этом же алфавите есть и символы "1", "2", "3", "4" и т.д.
И получается, что набор символов "12" меньше чем набор символ "2" !

Ребята, ведь все понятно :)
"Машинка" не "тупая", так как правила задаем мы сами и если поле типа char (nchar), то сравнение (сортировка) происходит по правилам, заданным в локали. В простейшем случае, это коды символов.
И набор символов "12" всегда будет меньше, чем набор символов "2*", так как по элементарным правилам всегда идет сравнение слева-направо, т.е. сначала код "1" сравнивается с кодом "2" и только после этого идет сравнение 2-го символа. Если его нет, то поле дополняется пробелом.
А вот неявное преобразование типов в Информиксе работает очень здорово и многим упрощает жизнь, хотя некоторым невнимательным может и усложнить :) Это как со строгой и нестрогой типизацией типов данных.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32927782
Alevtin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, признаю, был не прав
select max(поле_char) from имя_таблицы
работает не правильно, забыл, что в моем случае это поле в указанной мною таблице имеет строгое правило заполнения ;-)))
только определенное количество символов и в случае, если их меньше требуемого, то дополняю нулями слева.

Но всетаки, конструкция, указанная выше
select max(поле_типа_char * 1) from _таблица_
под 7.3 реально работает.
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32928656
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alevtin...
Но всетаки, конструкция, указанная выше
select max(поле_типа_char * 1) from _таблица_
под 7.3 реально работает.
А что, кто то об этом спорил ?
Это и есть яркий пример неявного преобразования типов в Информиксе.
Для выполнения операции умножения движок "понимает", что нужно сначала преобразовать строку в число (char -> int) и только потом выполнить умножение. Но если вместо цифр в char будут встречаться какие-то другие символы, то при преобразовании будет получена ошибка (типа "сам дурак" :))
...
Рейтинг: 0 / 0
Подскажите синтаксис преобразования типов?
    #32928688
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilis
Это и есть яркий пример неявного преобразования типов в Информиксе.


А еще это очень яркий пример хренового проектирования :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Подскажите синтаксис преобразования типов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]