|
|
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Есть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 07:00 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение. Какой информикс 7-9? а если select max(f*1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 09:19 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Informix 7.30 а предложенный вариант, который, я так понимаю должен был заставить сервер сделать преобразование автоматически, не прошел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 09:34 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
На 9 делается так select sum(fieldname::integer) from tabname ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 09:46 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
anjey предложенный вариант, который, я так понимаю должен был заставить сервер сделать преобразование автоматически, не прошел Что значит "не прошел"? Что произошло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 11:17 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 12:12 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение. select sum(cast(charfield as integer)) from Table , что есть идентично тому, что советовал onstat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 13:05 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Pidburtnyi Valentyn anjeyЕсть столбец типа char но там хранятся числа, а мне нужно взять максимальное значение. select sum(cast(charfield as integer)) from Table , что есть идентично тому, что советовал onstat Но ведь сказал же человек, что у него "Informix 7.30" К чему тогда эти советы ? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 13:21 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Я на 7.3 такие вещи делаю просто - select max(наименование поля char) from таблица Просходит автоматическое преобразование типов. И что в этом случае не срабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 14:45 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
AlevtinЯ на 7.3 такие вещи делаю просто - select max(наименование поля char) from таблица Просходит автоматическое преобразование типов. И что в этом случае не срабатывает. и что во что преобразуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 14:49 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Вот только что еще раз проверил. select max(mfo) from apbotd поле mfo у меня имеет тип char - так что все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 14:49 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис AlevtinЯ на 7.3 такие вещи делаю просто - select max(наименование поля char) from таблица Просходит автоматическое преобразование типов. И что в этом случае не срабатывает. и что во что преобразуется? А кто его знает ;-) но работает. Можно посидеть подумать, но лениво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 14:53 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 15:11 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Alevtin Вот только что еще раз проверил. select max(mfo) from apbotd поле mfo у меня имеет тип char - так что все работает. И у меня так работает! если в apbotd содержится строка со значением в mfo "2" и строка со значением в mfo "10" то возвращается "2". Наверно, хочется чтобы вернулось "10". Так что же произошло при select max(f*1) ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 15:22 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
vasilisНо ведь сказал же человек, что у него "Informix 7.30" К чему тогда эти советы ? :)) Сори, не заметил. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 17:16 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
вот, вот и у меня такая же история: делаю 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 03:57 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
anjey вот только что он сравнивал? не понятно Тупая машинка, думает, что если тип поля Char, то там символы-буковки. А в машинку зашили правила( типа алфавита), что "А" меньше чем "Б". И что особенно противно: "АБ" меньше чем "Б". В этом же алфавите есть и символы "1", "2", "3", "4" и т.д. И получается, что набор символов "12" меньше чем набор символ "2" ! Но я считаю, что не надо особенно на этом зацикливаться и глубоко в это вдумываться, а надо выполнить запрос: select max(поле_типа_char * 1) from _таблица_ Если результат не удовлетворит, то написать сюда, о том что именно произошло :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 10:41 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
anjeyвот, вот и у меня такая же история: делаю select max(поле_типа_char), возвращается значение 1022, например, а в том же поле есть цифирки и побольше! например 10194. явно informix не числа сравнивал.... вот только что он сравнивал? не понятно Сравнивал 2 строки лексокографически. 1022>_{lex} 10194 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 12:40 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
olleg anjey вот только что он сравнивал? не понятно Тупая машинка, думает, что если тип поля Char, то там символы-буковки. А в машинку зашили правила( типа алфавита), что "А" меньше чем "Б". И что особенно противно: "АБ" меньше чем "Б". В этом же алфавите есть и символы "1", "2", "3", "4" и т.д. И получается, что набор символов "12" меньше чем набор символ "2" ! Ребята, ведь все понятно :) "Машинка" не "тупая", так как правила задаем мы сами и если поле типа char (nchar), то сравнение (сортировка) происходит по правилам, заданным в локали. В простейшем случае, это коды символов. И набор символов "12" всегда будет меньше, чем набор символов "2*", так как по элементарным правилам всегда идет сравнение слева-направо, т.е. сначала код "1" сравнивается с кодом "2" и только после этого идет сравнение 2-го символа. Если его нет, то поле дополняется пробелом. А вот неявное преобразование типов в Информиксе работает очень здорово и многим упрощает жизнь, хотя некоторым невнимательным может и усложнить :) Это как со строгой и нестрогой типизацией типов данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 18:02 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Народ, признаю, был не прав select max(поле_char) from имя_таблицы работает не правильно, забыл, что в моем случае это поле в указанной мною таблице имеет строгое правило заполнения ;-))) только определенное количество символов и в случае, если их меньше требуемого, то дополняю нулями слева. Но всетаки, конструкция, указанная выше select max(поле_типа_char * 1) from _таблица_ под 7.3 реально работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 10:53 |
|
||
|
Подскажите синтаксис преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Alevtin... Но всетаки, конструкция, указанная выше select max(поле_типа_char * 1) from _таблица_ под 7.3 реально работает. А что, кто то об этом спорил ? Это и есть яркий пример неявного преобразования типов в Информиксе. Для выполнения операции умножения движок "понимает", что нужно сначала преобразовать строку в число (char -> int) и только потом выполнить умножение. Но если вместо цифр в char будут встречаться какие-то другие символы, то при преобразовании будет получена ошибка (типа "сам дурак" :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 15:18 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=32920614&tid=1609097]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 408ms |

| 0 / 0 |
