Вопрос

Этот попался мне на днях.Что бы вы ожидали получить от следующего?

SELECT 'X' AS line
UNION
SELECT 'X ' AS line

Обратите внимание на пробел во втором поле ВЫБОРА.Ну, по-видимому, SQL 2000 и 2005 оба возвращают 1 результат.Даже несмотря на то, что это СОЮЗ (и не ВЕСЬ СОЮЗ).

В онлайн-книгах я ничего не вижу по этому поводу.Почему это происходит?Я предполагаю, что это ошибка.Так это или есть веская причина?

Это было полезно?

Решение

Конечный пробел указан для обработки особым образом в стандарте ANSI SQL:

http://support.microsoft.com/default.aspx/kb/316626

http://support.microsoft.com/kb/154886/EN-US/

Я не уверен, что двоичная сортировка решит эту проблему:

IF 'X ' COLLATE Latin1_General_BIN = 'X' COLLATE Latin1_General_BIN 
    PRINT 'Equal'

При этом выводится "Равно".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top