create table dict {id, слово varchar2 (255)).
Я храню строки переменной длины в поле "слово". Как выполнить запрос для следующих случаев: -
Env: h2, mysql. Данные состоят из английских слов, но хотели бы знать ограничения, если вы используете многобайтовые данные (например, japanese)
SELECT
*
FROM
dict
WHERE
LENGTH(word) = 4 /* 1. */
OR (LENGTH(word) > 4) /* 2. */
OR (LENGTH(word) >=4 AND LENGTH(word) <= 8) /* 3. */
OR (LENGTH(word) <4) /* 4. */
/* Choose the right WHERE clause, based on your case */
Для многобайтовых данных вы должны использовать CHAR_LENGTH вместо LENGTH
Вы можете уточнить вопрос и объяснить, что неясно в документации для строковых функций.
CHAR_LENGTH() docs четко заявляет, что
Возвращает длину строки str, измеренный в символах. Многобайтовый символ считается одиночным персонаж. Это означает, что для строка, содержащая пять двухбайтовых символов, LENGTH() возвращает 10, тогда как CHAR_LENGTH() возвращает 5.