MySQL: Выбор строк заказан счетчиком символов

Не совсем то, что вы спрашиваете, но в моей грамматике MySQL я должен поддерживать несколько версий сервера, что я делаю, используя семантические предикаты. Это означает, что я могу использовать одну грамматику и включать / отключать определенные пути в зависимости от поля serverVersion, которое есть в моем парсере. Вот как это выглядит:

alterDatabase:
    DATABASE_SYMBOL schemaRef (
        createDatabaseOption+
        | {serverVersion < 80000}? UPGRADE_SYMBOL DATA_SYMBOL DIRECTORY_SYMBOL NAME_SYMBOL
    )
;

и работает очень хорошо. Я могу использовать этот подход даже в лексере (но там с проверкой семантических предикатов по соображениям производительности), который позволяет мне включать и выключать ключевые слова, например:

CONTRIBUTORS_SYMBOL: C O N T R I B U T O R S {serverVersion < 50700}?;

9
задан 19 April 2009 в 14:52
поделиться

1 ответ

Попробуйте использовать функцию ДЛИНА :

SELECT * FROM table ORDER BY LENGTH(myField);

В зависимости от того, что вы делаете, вы вместо этого может потребоваться использовать CHAR_LENGTH :

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

Если вы не знаете, что это значит, вы, вероятно, захотите LENGTH .

23
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: