MySQL. Как преобразовать TEXT или INT в LONGTEXT для SELECT?

Рейтинг: 0Ответов: 1Опубликовано: 07.03.2023

В MySQL для SELECT есть функция CAST, он может конвертировать в VARCHAR, а в LONGTEXT он конвертировать не может, выдаёт ошибку 1064. А функция CONVERT ... USING преобразовывает в текст (строку), но не в LONGTEXT

Пример SQL-запроса, который не работает:

SELECT `id` AS `post_id`, CAST('content' AS VARCHAR(255)) AS `key`, CAST(`content` AS LONGTEXT) AS `va1ue` FROM `posts`

Ответы

▲ 0

CAST() function

  • CHAR[(N)] [charset_info]

Produces a string with the VARCHAR data type. except that when the expression expr is empty (zero length), the result type is CHAR(0). If the optional length N is given, CHAR(N) causes the cast to use no more than N characters of the argument. No padding occurs for values shorter than N characters. If the optional length N is not given, MySQL calculates the maximum length from the expression. If the supplied or calculated length is greater than an internal threshold, the result type is TEXT. If the length is still too long, the result type is LONGTEXT.

Само по себе преобразование именно в тип данных LONGTEXT, даже если таковое бы существовало, совершенно бессмысленно.

Единственная ситуация, когда такое преобразование могло бы иметь смысл - это запрос CREATE TABLE .. SELECT. Однако в этом случае гораздо проще задать требуемый тип данных в первой части запроса.