powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
25 сообщений из 35, страница 1 из 2
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416467
LazySatyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Firebird 2.5.2 x64
Есть столбец Model типа VARCHAR(10) пишу параметризированный запрос

SELECT
Materials.Model
FROM
Materials
WHERE
Materials.Model LIKE @Material

В @Material передаю допустим %0123456789% и получаю исключение "arithmetic exception, numeric overflow, or string truncation", если написать %01234567% то всё нормально. С одной стороны всё понятно длина того, что я передаю равна 12 символам, а не 10, поэтому и имеет место исключение, но я считал, что знаки "%" в запросах LIKE считаются как служебные и не должны восприниматься как часть строки и не должно быть исключения. Это баг или фича? Если фича то что получается мне надо в базе увеличить столбец на 2 символа для "%"? CONTAINING не могу использовать так как использую ORM и не могу повлиять на то что она генерит, а она генерит именно с LIKE.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416502
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LazySatyrЭто баг или фича?
А это баг или фича искать любое совпадение, при этом явно указав полное соответствие (%0123456789%)?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416517
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LazySatyrЕсли фича то что получается мне надо в базе увеличить столбец на 2 символа для "%"?

А заодно придётся дополнительно проверку добавить на длину введённого, а то получим в конце концов тоже самое если пользователь введёт 12 символов и поиск будет по 12 вести.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416519
LazySatyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman, я вроде написал, что передаю значение через параметр @Material который в своё время передаётся из элемента интерфейса через который пользователь ищет материал, а %0123456789% я написал просто для примера.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416524
LazySatyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, проверка на длину в 10 символов есть и на клиенте и на сервере, но те знаки "%" делают из моей строки 12 из-за чего и ошибка.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416525
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LazySatyrа %0123456789% я написал просто для примера.
И это отличный пример и встречный вопрос как раз по нему. Зачем искать подобное тому, что введено максимально точно? а001аа177 = %а001аа177%? Номер в поиске введен ПОЛНОСТЬЮ.

Вообще, такое дело нужно переписывать на ХП и проверять все доступные варианты. Например, если не введен 1 символ, то нужно проверить два вариант: в начале и в конце %.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416532
LazySatyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman, зачем писать кучу запросов если этот запрос работает и на полное соответствие и на частичное и работает отлично не считая этой проблемы? Во-вторых я просил такие поведение это баг или фича? Писать в трекер чтобы правили или просто увеличить столбец на 2 символа.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416535
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LazySatyr,

для параметров в выражении вида filed LIKE :param, сервер назначает тип данных такой же, как и у поля.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416546
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LazySatyr,

я имел ввиду, то что если ты сделаешь Model VARCHAR(12), то дополнительно придётся наложить CHECK с проверкой длинны в 10 символов. Иначе никто не помешает ввести пользователю модель длинной в 12 символов.

Багом сервера это скорее всего не является, т.к. он проверяет длину любого параметра одинаково не зависимо от того в каком месте он находится.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38416552
LazySatyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, на счёт CHECK согласен. В общем всё оказалось как я и считал изначально, что "filed LIKE :param, сервер назначает тип данных такой же, как и у поля". Всем спасибо, вопрос закрыт.
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417293
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladдля параметров в выражении вида filed LIKE :param, сервер назначает тип данных такой же, как и у поля.
а для "field SIMILAR TO :param"? :)
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417302
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

а попробовать?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417326
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE IPLOG (
    D     TIMESTAMP,
    IPV4  VARCHAR(15)
);

INSERT INTO IPLOG (D, IPV4) VALUES (CURRENT_TIMESTAMP, '192.168.1.1');

SELECT * FROM IPLOG WHERE IPV4 SIMILAR TO '192.168.[[:DIGIT:]]{1,3}.[[:DIGIT:]]{1}' ;
// ok

SELECT * FROM IPLOG WHERE IPV4 SIMILAR TO :P;
P = '192.168.[[:DIGIT:]]{1,3}.[[:DIGIT:]]{1}'

Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.


Какого размера мне нужно создать поле IPV4, чтобы не было ошибки? :)
И только не говорите что это нормально :)
Я конечно знаю, что в текущей реализации нужно писать так:
Код: sql
1.
SELECT * FROM IPLOG WHERE IPV4 SIMILAR TO CAST(:P AS VARCHAR(500))


Но это... :)
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417328
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeКакого размера мне нужно создать...буфер под параметр ? И почему именно такого ?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417332
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

ты реально думаешь что пользователи такие выражения будут посылать на сервер?
Ещё как выход использовать EXECUTE BLOCK там у параметра размер можно заранее задать
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417355
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladNickDeeКакого размера мне нужно создать...буфер под параметр ? И почему именно такого ?
Я проверял в IBExpert. Думаю что он делает Prepare, и не занимается созданием буферов сам.
Можно ли менять размер буфера после Prepare?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417357
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeМожно ли менять размер буфера после Prepare?Можно даже менять тип данных
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladМожно даже менять тип данных
И получить тот же string truncation когда сервер будет преобразовывать тип из message
пришедшего с клиента в серверное DSC (или что там выделяется под параметр)?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417418
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Есс-но :)

Наш весёлый тролль ведь не думает над тем, что ему пишут. Вот и получает точные и бесполезные ответы на свои вопросы :)

Я ему про буфер на сервере, а он мне - про IBE. Славно поговорили :)
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417423
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ ему про буфер на сервере, а он мне - про IBE.
А вот отсюда поподробнее, пожалуйста: как сменить размер буфера на сервере после Prepare?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417462
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovкак сменить размер буфера на сервере после Prepare?Никак. А где ты в моих словах увидел обратное ?
Может начнём читать ответы не по диагонали ?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417476
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА где ты в моих словах увидел обратное ?
Здесь:
hvlad...буфер под параметр ? И почему именно такого ?
hvladМожно даже менять тип данных
hvladЯ ему про буфер на сервере

Кстати, на первый процитированный вопрос ответом мог бы быть "потому что такой размер
прислал клиент в message для execute".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417481
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDimitry Sibiryakovкак сменить размер буфера на сервере после Prepare?Никак. А где ты в моих словах увидел обратное ?
Может начнём читать ответы не по диагонали ?
Тогда я ещё раз уточню:
Код: sql
1.
2.
3.
4.
CREATE TABLE IPLOG (
    D     TIMESTAMP,
    IPV4  VARCHAR(15)
);


делаем prepare для
Код: sql
1.
SELECT * FROM IPLOG WHERE IPV4 SIMILAR TO :P;


Получаем для параемтра длину 15. Как мне теперь записать туда строку большей длины?
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417482
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeКак мне теперь записать туда строку большей длины?
Чтобы сервер не заругался, естественно :)
...
Рейтинг: 0 / 0
Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
    #38417497
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут я говорю с точки зрения сервера (а с какой же ещё мне говорить ?):hvladNickDeeКакого размера мне нужно создать...буфер под параметр ? И почему именно такого ?
Вот тут мне продолжают лепить про клиента:NickDeeЯ проверял в IBExpert. Думаю что он делает Prepare, и не занимается созданием буферов сам.
Можно ли менять размер буфера после Prepare?
О чём я и сообщаю:hvladЯ ему про буфер на сервере, а он мне - про IBE
Вот тут и ДС вступает в клуб нечитающих написанное:Dimitry Sibiryakovкак сменить размер буфера на сервере после Prepare?
Ы ?
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Запросы с LIKE arithmetic exception, numeric overflow, or string truncation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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