#mysql #text #varchar #substr
Вопрос:
Я заметил, что MySQL substr() возвращает значение в тексте типа данных, когда длина превышает 512.
Пожалуйста, ознакомьтесь с приведенным ниже примером;
Таблица данных:
create table temp10( c0 int primary key auto_increment, c1 varchar(2500));
insert into temp10(c1) values ('abcd');
Вторичная таблица, использующая temp10 в качестве источника;
create table temp11 as
select c1,
substr(c1, 1, 10) as c2,
substr(c1, 1, 100) as c3,
substr(c1, 1, 512) as c4,
substr(c1, 1, 513) as c5,
substr(c1, 1, 2500) as c6
from temp10;
Структура созданной таблицы является;
Таблица: Столбцы temp11:
c1 varchar(2500)
c2 varchar(10)
c3 varchar(100)
c4 varchar(512)
c5 text
c6 text
Является ли это ожидаемым/ документированным поведением?
Такое же поведение было замечено и для подзапросов, вложенных в предложение select.
Комментарии:
1. Хорошее наблюдение. Насколько я могу судить, в документации это, похоже, не описано. Вот демонстрация проблемы: dbfiddle.uk/.. …
2. основная проблема заключается в максимальном размере строки, и если вы берете текст, он хранится «снаружи», поэтому хороший выбор для использования ТЕКСТА