Как запросить строки на основе их длины

0

create table dict {id, слово varchar2 (255)).

Я храню строки переменной длины в поле "слово". Как выполнить запрос для следующих случаев: -

  • Искать все слова длиной 4 символа
  • Искать все слова длиной более 4 символов
  • Искать все слова с 4-8 символами (включительно)
  • Искать все слова длиной менее 4 символов

Env: h2, mysql. Данные состоят из английских слов, но хотели бы знать ограничения, если вы используете многобайтовые данные (например, japanese)

Теги:
database

2 ответа

1
Лучший ответ
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

1

Вы можете уточнить вопрос и объяснить, что неясно в документации для строковых функций.

CHAR_LENGTH() docs четко заявляет, что

Возвращает длину строки str, измеренный в символах. Многобайтовый символ считается одиночным персонаж. Это означает, что для строка, содержащая пять двухбайтовых символов, LENGTH() возвращает 10, тогда как CHAR_LENGTH() возвращает 5.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню