Oracle — использование между буквами — между «А» и «С»

это сомнение очень простое, однако, прочитав ответ на заданный вопрос, я довольно запутался (я не знаю, почему, поскольку это простая тема).

Рассмотрим этот базовый запрос:

SELECT * FROM emp WHERE ename BETWEEN ‘A’ AND ‘C’

Возвращаемые имена сотрудников будут теми, чьи имена начинаются с A и B, и объяснение будет следующим:

Здесь столбец символов сравнивается со строкой с помощью оператора BETWEEN, который эквивалентен ename >= ‘A’ AND ename ‹= ‘C’. Имя CLARK не будет включено в этот запрос, потому что «CLARK» > «C».

Почему Clark считается больше, чем 'C', если в объяснении есть утверждение: ename меньше или равно 'C'?

Спасибо.


person Carlos Roberto de Paula Junior    schedule 07.03.2013    source источник


Ответы (2)


Потому что, когда вы сортируете по алфавиту

Constant Clark C Claude 

ты получишь

C Clark Claude Constant 

so

C < Clark < Claude < Constant

См. Википедию для более формального объяснения, суть такова (выделено мной):

Чтобы решить, какая из двух строк стоит первой в алфавитном порядке, сначала сравниваются их первые буквы. Строка, первая буква которой стоит в алфавите раньше, идет первой в алфавитном порядке. Если первые буквы совпадают, то сравниваются вторые буквы и так далее, пока не определится порядок. (Если в одной строке не хватает букв для сравнения, то она считается первой; например, «телега» предшествует «тележке».) Результат упорядочения набора строк в алфавитном порядке. заключается в том, что слова с одинаковой первой буквой группируются вместе, а внутри такой группы слова с одинаковыми первыми двумя буквами группируются вместе и так далее.

person fvu    schedule 07.03.2013
comment
Спасибо, забавно, что я применил правильную сортировку в некоторых упражнениях, как вы упомянули, но Между тем я почему-то немного запутался, еще раз спасибо. редактировать: очень жаль, что я не могу пометить ответ как полезный (пока нет достаточной репутации). - person Carlos Roberto de Paula Junior; 07.03.2013

Почему Clark считается больше, чем 'C', если в объяснении есть утверждение: ename меньше или равно 'C'?

Здесь нужно учитывать одну вещь. По понятным причинам у нас есть ALLEN, BLAKE, CLARK, ADAMS, A, C. Сортировка по алфавиту у нас есть

АДАМС АЛЛЕН БЛЕЙК С КЛАРК

Вот почему CLARK НЕ ВХОДИТ В АССОРТИМЕНТ, ПОТОМУ ЧТО ОН ПРИХОДИТ ПОСЛЕ C.

person Nehemiah    schedule 29.05.2017
comment
Добро пожаловать в Stack Overflow. Хотя кричать не надо. - person Gary99; 30.05.2017