Последнее обновление
IS_VALID_UTF8
Описание
Функция IS_VALID_UTF8 проверяет, содержит ли строка корректные данные в кодировке UTF-8. Она проверяет каждую последовательность байтов во входных данных и возвращает true, если все последовательности соответствуют стандарту кодировки UTF-8, или false, если обнаружена хотя бы одна недопустимая последовательность байтов.
Это полезно при работе с данными, импортированными из внешних источников (файлов, сетевых потоков и т. д.), которые могут содержать двоичные данные или содержимое с некорректной кодировкой, когда необходимо проверить целостность данных перед выполнением операций со строками.
Псевдоним
ISVALIDUTF8()
Синтаксис
IS_VALID_UTF8(<str>)
Параметры
| Параметр | Описание |
|---|---|
<str> | Строка для проверки. Тип: VARCHAR или STRING |
Возвращаемое значение
Возвращает значение типа BOOLEAN.
- Возвращает
true, если строка содержит корректные данные в кодировке UTF-8. - Возвращает
false, если строка содержит хотя бы одну недопустимую последовательность байтов UTF-8.
Особые случаи:
- Если параметр равен NULL, возвращает NULL.
- Пустая строка считается корректной строкой UTF-8, возвращает
true.
Примеры
- Корректные строки ASCII
SELECT IS_VALID_UTF8('hello');
+------------------------+
| is_valid_utf8('hello') |
+------------------------+
| 1 |
+------------------------+
- Корректные многобайтовые символы UTF-8 (китайские иероглифы)
SELECT IS_VALID_UTF8('Hello, 世界');
+-----------------------------+
| is_valid_utf8('Hello, 世界') |
+-----------------------------+
| 1 |
+-----------------------------+
- Пустая строка
SELECT IS_VALID_UTF8('');
+--------------------+
| is_valid_utf8('') |
+--------------------+
| 1 |
+--------------------+
- Недопустимые байты UTF-8 (полученные с помощью UNHEX)
SELECT IS_VALID_UTF8(UNHEX('C0AF'));
+------------------------------+
| is_valid_utf8(unhex('C0AF')) |
+------------------------------+
| 0 |
+------------------------------+
- Обработка значения NULL
SELECT IS_VALID_UTF8(NULL);
+---------------------+
| is_valid_utf8(NULL) |
+---------------------+
| NULL |
+---------------------+
- Использование с данными таблицы
CREATE TABLE test_utf8 (
id INT,
val VARCHAR(200)
) DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ("replication_num" = "1");
INSERT INTO test_utf8 VALUES
(1, 'hello'),
(2, ''),
(3, 'Hello, 世界'),
(4, NULL);
INSERT INTO test_utf8 VALUES (5, UNHEX('C0AF'));
INSERT INTO test_utf8 VALUES (6, UNHEX('FF'));
SELECT id, IS_VALID_UTF8(val) FROM test_utf8 ORDER BY id;
+------+--------------------+
| id | is_valid_utf8(val) |
+------+--------------------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | NULL |
| 5 | 0 |
| 6 | 0 |
+------+--------------------+