2016-06-22 2 views
1

Я заметил, что предложение ORDER BY заказывает текст в соответствии с порядком ASCII, а не в алфавитном порядке, например, MySQL.Свойства не упорядочены по алфавиту

Другими словами, это как Neo4j прикажет свойства:

Apple 
Carrot 
banana 

И MySQL бы заказать их, как это:

Apple 
banana 
Carrot 

Что такое лучший способ получить Neo4j сортировать по алфавиту? Один из способов заключается в использовании верхней (или ниже), как это:

MATCH (e) RETURN e.name ORDER BY upper(e.name) ASC;

Другая идея состоит в том, чтобы создать новое свойство, nameSort, что то же самое, что и свойство имени, но в верхней (или нижней) случае ,

Любые другие способы сделать это? Я бы предпочел сделать что-то простое, например, модификацию Cypher выше, а не создавать новое свойство, но я не знаю, каковы последствия производительности.

+0

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

ответ

1

Neo4j выполняет лексикографический порядок строк, что и есть то, что вы видите. Это документировано here. Чтобы добиться нечувствительности к регистру, вам необходимо реализовать это самостоятельно (например, ваше предложение о преобразовании дела либо во время запроса, либо при сохранении значения свойства).

+1

В частности, лексикографическое упорядочение _Unicode._ (в случае чувствительности к регистру оно может иметь или не иметь алфавита какого-либо алфавита в порядке, это зависит от языка и системы письма). –

Смежные вопросы