Как запросить строки на основе их длины - PullRequest
0 голосов
/ 04 октября 2010

создать таблицу dict {id, word varchar2 (255)).

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

  1. Поиск всех слов длиной 4 символа
  2. Поиск всех слов длиной более 4 символов
  3. Поиск всех слов, которые имеют 4-8 символов (включительно)
  4. Поиск всех слов длиной не более 4 символов

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

Ответы [ 2 ]

1 голос
/ 04 октября 2010

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

CHAR_LENGTH () в документах четко указано, что

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

1 голос
/ 04 октября 2010
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...