Обрезание строки до заданной длины с обоих краев в MySQL
Функция STRING_TRUNCATE_BOTH()
В MySQL нет отдельной функции для данной задачи. Однако ее можно создать самостоятельно.
Исходный код
DROP FUNCTION IF EXISTS STRING_TRUNCATE_BOTH;
DELIMITER $$
CREATE FUNCTION STRING_TRUNCATE_BOTH(string TEXT, length INT)
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE result TEXT DEFAULT '';
IF (length > 0) THEN
BEGIN
DECLARE truncateLength INT DEFAULT 0;
SET truncateLength = CHAR_LENGTH(string) - length;
IF (truncateLength > 0) THEN SET result = SUBSTRING(string, FLOOR(truncateLength / 2) + 1, length);
ELSE SET result = string;
END IF;
END;
END IF;
RETURN result;
END$$
DELIMITER ;
Аргументы
- string — обрезаемая строка;
- length — нужная длина строки.
Возвращаемое значение
Возвращает строку string, обрезанную до длины length с обоих краев.
Особенности
- Безопасна для многобайтных строк.
- Важно помнить, что при вычислении обрезаемых подстрок в приоритете правый край. Т.е. если строка обрезается на 3 символа, то с правого края будет срезано 2 символа, а с левого — 1.