Почему функция length() в SQL выводит неправильное количество символов если символы русские?
Почему функция length() в SQL выводит неправильное количество символов если символы русские? Если символы латинские то всё верно но если русские то вывод неверный.
Поменял кодировку и самой БД и таблицы на utf8 — не помогло.
Я только изучаю SQL, сори если вопрос тупой но на просторах интернета ответа не нашёл как это исправить.
Отслеживать
задан 25 мар 2019 в 13:51
Даня Pylooon Даня Pylooon
43 3 3 бронзовых знака
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Функция length() в MySQL возвращает длину строки в байтах. А Русские символы в кодировке UTF-8 занимают 2 байта.
Для получения длины строки в символах надо использовать функцию char_length()
Отслеживать
ответ дан 25 мар 2019 в 13:57
44.1k 3 3 золотых знака 35 35 серебряных знаков 66 66 бронзовых знаков
Спасибо большое!
25 мар 2019 в 13:59
- mysql
- sql
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Функция LENGTH в Oracle SQL
В посте рассматривается однострочная функция LENGTH, относящаяся к функциям по работе с символьными данными.
Символьные данные или строки являются универсальными, т.к. они позволяют хранить практически любой тип данных. Функции, которые работают с символьными данными, классифицируются на функции преобразования регистра символов и манипулирования символами.
К функциям манипулирования символами относятся: CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM и REPLACE. Они используются для извлечения, преобразования и форматирования символьных строк.
Функция LENGTH использует строку символов в качестве входного параметра и возвращает числовое значение, представляющее количество символов, присутствующих в этой строке.
В примере извлекаются данные из колонок last_name и first_name и определяется количество символов для каждого значения колонок last_name и first_name.
SELECT last_name, LENGTH(last_name), first_name, LENGTH(first_name) FROM employees;
Функция LEN
Функция LEN (строковое выражение) возвращает число символов в строке, задаваемой строковым выражением. Ограничимся случаем, когда число символов больше единицы:

Консоль
Выполнить
Реализация функции LEN() в MS Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server имеет одну особенность, а именно, она не учитывает концевые пробелы.
Давайте выполним следующий код:
Функция REPLICATE добавляет справа к константе ‘abcde’ пять пробелов, которые не учитываются функцией LEN, — в обоих случаях мы получаем 5.
Функция DATALENGTH возвращает число байтов в строковом представлении и демонстрирует различие в типах данных CHAR и VARCHAR. DATALENGTH возвращает 12 для типа CHAR(12), и 10 — для VARCHAR(12).
Как и следовало ожидать, DATALENGTH для переменной типа VARCHAR вернуло фактическую длину строковой переменной. Но почему для переменной типа CHAR результат оказался равным 12? Дело в том, что CHAR является типом данных фиксированной длины. Если значение переменной меньше объявленной длины, а мы использовали CHAR(12), значение переменной будет дополнено концевыми пробелами, чтобы «выровнять» длину до 12 символов.
На сайте имеются задачи, в которых требуется упорядочить (найти максимум и т. д.) в числовом порядке значения, представленные в текстовом формате. Например, номер места в самолете (2d) или скорость привода CD-ROM (24x). Проблема заключается в том, что текст сортируется так (по возрастанию):

Консоль
Выполнить
LENGTH ФУНКЦИЯ
Функция Oracle/PLSQL LENGTH возвращает длину указанной строки.
Синтаксис
Синтаксис функции Oracle/PLSQL LENGTH:
LENGTH( string1 )
Параметры или аргументы
string1 – строка, длину которой возвращает функция. string1 может быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB.
Примечание
- Функция LENGTH возвращает numeric значение.
- Если string1 равен NULL, то функция LENGTH вернет NULL.
Применение
Функцию LENGTH можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример
Рассмотрим несколько примеров функции LENGTH и изучим, как использовать функцию LENGTH в Oracle/PLSQL.