|
|
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Поле Field1 типа VarChar таблицы Table1 содержит как числовые так и символьные значения. По этому полю нужно сделать поиск. Запрос вида Код: plaintext Вопрос: Возможно ли в запросе избежать этой ошибки? Или может быть есть какие-то функции аналогичные оператору IF в delphi? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 14:32:46 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Сервер то какой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 14:54:18 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 14:55:10 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
FEVInterbase 7.1Мышки кололись, плакали, но упорно продолжали жрать кактус... UDF пиши, которая будет отсекать лишние знаковые символы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 15:06:07 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Ну про грамотное проектирование говорить не буду. Сам понимаешь... А так... УДФ поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 15:07:48 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Johnmen Ну про грамотное проектирование говорить не буду. Сам понимаешь... Да, понимаю. С базами данных не первый день работаю. Только с IBase недавно. Насколько я понял UDF хранятся в отдельных dll (могу ошибаться), и подозреваю что с ними возникнут проблемы при распространении приложения, поэтому не хотелось бы с ними связываться. Возможно у кого-то есть другие мысли? МимопроходящийМышки кололись, плакали, но упорно продолжали жрать кактус... Это к чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 15:39:25 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
FEV Johnmen Ну про грамотное проектирование говорить не буду. Сам понимаешь... Да, понимаю. С базами данных не первый день работаю. Только с IBase недавно.Ну и фиг ли тогда такое поле создал? FEVНасколько я понял UDF хранятся в отдельных dll (могу ошибаться), и подозреваю что с ними возникнут проблемы при распространении приложения, поэтому не хотелось бы с ними связываться. Возможно у кого-то есть другие мысли?Не хочешь UDF - пиши SP. Эффективность будет ниже на порядок. FEV МимопроходящийМышки кололись, плакали, но упорно продолжали жрать кактус... Это к чему?К вопросу выбора сервера. Для FB 1.5 можно было б извратиться в самом запросе, для IB вариантов не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 16:48:11 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
МимопроходящийНу и фиг ли тогда такое поле создал? Для тех, кто не понял, объясняю: нужно хранить в одном поле данные смешанного типа (почему именно в одном поле? Это долгая и не интересная история). В итоге пришли (не я один) к varchar. 2 Мимопроходящий Не ясен момент с UDF. Нужно ли будет таскать dll c UDF вместе с базой данных? МимопроходящийДля FB 1.5 можно было б извратиться в самом запросе, для IB вариантов не вижу. А чуть подробнее про это самое "извратиться" можно? Вдруг из этого можно ещё как-нибудь извратиться и применить к IB? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 17:01:10 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
FEVДля тех, кто не понял, объясняю: нужно хранить в одном поле данные смешанного типаОт нужно и всё тут! Слово "нормализация" для нас пустой звук.... FEV(почему именно в одном поле? Это долгая и не интересная история). В итоге пришли (не я один) к varchar.Вечерело. А ёжики всё падали и падали... (Из анекдота) FEV2 Мимопроходящий Не ясен момент с UDF. Нужно ли будет таскать dll c UDF вместе с базой данных?Зачем же? Сервер умеет телепатически скачивать UDF из любой точки замного шара к себе в локаль. Не знал? FEV МимопроходящийДля FB 1.5 можно было б извратиться в самом запросе, для IB вариантов не вижу. А чуть подробнее про это самое "извратиться" можно? Вдруг из этого можно ещё как-нибудь извратиться и применить к IB? :)Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 17:15:11 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
2 Мимопроходящий Не благодарю за бесполезные ответы. Понтов у вас хоть отбавляй, а вот насчёт реальных знаний не уверен. Есть подозрения, что с вашим умением флудить вы будете пользоваться популярностью здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 17:26:27 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Поле Field1 типа VarChar таблицы Table1 содержит как числовые так и символьные значения. По этому полю нужно сделать поиск. Запрос вида Код: plaintext Врядли. Потому как ни один из серверов не знает что больше "Едрить твою через коромысло" или 10 :) А если символьные значения в выборку попадать не должны и данные отвечают определенным условиям, то вполне может прокатить Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 17:46:00 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
ЛентяйПричем порядок условий в WHERE должон быть именно таким.Не забывай, что у IB не реализована опция CompleteBooleanEvaluation . Потому и говорю, что для IB - без вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 17:50:58 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий ЛентяйПричем порядок условий в WHERE должон быть именно таким.Не забывай, что у IB не реализована опция CompleteBooleanEvaluation . Потому и говорю, что для IB - без вариантов. А мне почему-то казалось, что оно там как раз неполное, а полное включается этим параметром. Если наоборот, тогда да, тогда только в FB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 18:05:54 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
ЛентяйSELECT ID FROM Table1 WHERE CAST(Field1 AS Integer) > 10 and Field1 between '0' and '999999999' Причем порядок условий в WHERE должон быть именно таким. Спасибо за идею, эта штука работает, но только придётся помучиться с условиями between, т.к. поле может содержать и значения вида "123-456/7". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 18:12:51 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
ЛентяйА мне почему-то казалось, что оно там как раз неполное, а полное включается этим параметром. У FB оно "неполное" по умолчанию . А параметр введён специально для совместимости с IB. Чтоб его таки можно было сделать "полным", как у оного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2004, 18:17:23 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Ну значит я заблуждался по поводу IB. Вообще-то затрудняюсь сказать когда полное вычисление логических выражений необходимо. Разве что когда в условии отбора присутствует вызов SP, модифицирующей данные и ее выполнение обязательно в любом случае или какой нибудь хитрой UDF. Вообщем на практике как-то не сталкивался. А вон у FEV-а чего-то работает. Может а IB 7 чего изменили? Просьба к тем, кто имеет IB 7 (или кого IB7 имеет:) ) выполнить такой запрос: select * from rdb$database where cast('a' as integer) = 0 and 1=0 Возникает ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 11:28:40 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
For 'a': Overflow occurred during data type conversion. conversion error from string "a". Для 'а': Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric overflow, or string truncation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 11:54:46 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Значит и в IB 7 полное вычисление логических выражений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 12:05:58 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
ЛентяйЗначит и в IB 7 полное вычисление логических выражений.А кто-то сомневался?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 12:37:54 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
МимопроходящийА кто-то сомневался?.. Доверяй, но проверяй:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2004, 13:51:24 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
а не проще ли завести поле в котором указывать тип хранимых данных и долбошиться более? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 06:30:11 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
тьфу блин читать: НЕ долбошиться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 06:32:49 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Klickтьфу блин читать: НЕ долбошиться :) а потом придется еще какое нибудь поле заводить и долбошиться еще более, нет тут надо пересматривать структуру БД, но он ведь не один пришол к мнению что нада варачар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 09:26:24 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
Klickа не проще ли завести поле в котором указывать тип хранимых данных и долбошиться более? :) Не проще. Допустим ты добавишь поле Type_Field. Значение 1 в нем будет обозначать, что в поле Field храниться число в символьном виде. Выражения в условии WHERE вычисляються справа налево. Тогда логично написать: WHERE Cast(Field as Integer) > 10 AND Type_Field = 1 Но при этом все равно получишь ошибку преобразования типов, потому что в IB оба операнда будут вычисляться ВСЕГДА. В FB вычислиться Type_Field = 1 и если его результат будет False, то до cast дело не дойдет. Для того, чтобы FB тоже поностью вычичлял логические выражения нужно в его конфигурационном файле написать CompleteBooleanEval = 1. Спрашивающий пользуется IB. Поэтому, пожалуй, у него есть 2 варианта: 1 Написать UDF. При этом индексированного поиска по результату UDF не будет. 2 Действительно завести дополнительное поле. Только в нем хранить преобразованное в Integer значение. Поле, соответственно, заполнять на триггерах. Там доступна обработка исключений, так что особых проблем при преобразовании не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 09:53:16 |
|
||
|
Как обработать ошибку преобразования типов?
|
|||
|---|---|---|---|
|
#18+
авторА вон у FEV-а чего-то работает. Может а IB 7 чего изменили? Просьба к тем, кто имеет IB 7 (или кого IB7 имеет:) ) выполнить такой запрос: select * from rdb$database where cast('a' as integer) = 0 and 1=0 Возникает ошибка? В этом случае ошибка возникает, а вот работает это тогда, когда вместо условия '1=0' указать условие выборки по индексированному полю (разумеется для тех таблиц, где это поле есть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 11:40:57 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32639222&tid=1578073]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 499ms |

| 0 / 0 |
