Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую. Проблема следующая. Мне в хранимой процедуре нужно определить размер графического файла формата tga. Он хранится в 13-14 и 15-16 байтах с начала файла (если начинать с 1).
Сначала делаю "в лоб":
...
DECLARE FileName VARCHAR(100);
DECLARE FileImage LONGBLOB;
DECLARE Width TINYINT UNSIGNED;
...
SET FileName = ...
SET FileImage = LOAD_FILE(FileName);
SET Width = SUBSTR(FileImage,13,2);
Получаю:
Procedure execution failed
1366 - Incorrect integer value: '\x80\x0D' for column 'Width' at row 1
определяю Width так:
DECLARE Width VARCHAR(20);
чтобы посмотреть, что же мне возвращается на самом деле... результат тот же:
Procedure execution failed
1366 - Incorrect string value: '\x80\x0D' for column 'Width' at row 1
начинаю шаманить:
SET Width = REPLACE(SUBSTR(FileImage,13,2),'\x','');
или
SET Width = REPLACE(SUBSTR(FileImage,13,2),'\\x','');
,если ему один слэш не нравится
дает аналогичный результат:
Procedure execution failed
1366 - Incorrect string value: '\x80\x0D' for column 'Width' at row 1
Есть идеи, коллеги? php не предлагать, задачу нужно решить силами MySQL.
Неактивен
Вы пытаетесь забить гвозди микроскопом
Разбейте на отдельные символы и используйте ASCII() над ними.
Неактивен
все правильно, надо делать как paulus сказал
Отредактированно DJK (09.07.2011 13:19:43)
Неактивен
Спасибо. Только про микроскоп и гвозди как-то не к месту, мне кажется
Неактивен