MYSQL Concat, используемый в SP, преобразует строки в числа.MySql

Форум по Mysql
Ответить
Anonymous
 MYSQL Concat, используемый в SP, преобразует строки в числа.

Сообщение Anonymous »

MYSQL 5.7.33
В хранимой процедуре я использую CONCAT с числами, преобразованными в строки, и буквой алфавита. Это выдает ошибку, и когда я удаляю букву или меняю букву на числовое значение, все идет хорошо:
Соответствующие части процедуры:

Код: Выделить всё

DECLARE  sReturnValue char(10) DEFAULT "";
.... coding ....
select (@curYear \* 100000) + 1 into @inv_invnr;   -- numeric value
select "G" into @sInvPrefix;  -- string value
select CONVERT(@inv_invnr, CHAR) into sReturnValue;  -- string value to be used in concat
return CONCAT(left(sReturnValue,4), @sInvPrefix, right(sReturnValue,4)) ;
Это дает

Код ошибки: 1265. Данные усекаются для столбца «имя сохраненного процесса» в строке 1.

Когда я меняю sInvPrefix на «0» (ноль), все работает нормально.
Итак, похоже, что CONCAT игнорирует тип sReturnValue и делает его числовым, что конфликтует с буквой «G» в sInvPrefix.
Я использовал Convert, Cast и всевозможные композиции синтаксиса, но это не сработало. Когда я пробую concat в своей рабочей среде MYSQL как прямую команду со строками, все идет хорошо:

Код: Выделить всё

select CONCAT(left("202500001",4), "A", right("202500001",4)) ; -- is ok
select (CONCAT("123", "A", "456"));  -- is ok
Значит, это должно быть что-то с типом переменных

Подробнее здесь: https://stackoverflow.com/questions/798 ... to-numbers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»