ошибка ОБЪЕДИНЕНИЯ пробелов
-
19-09-2019 - |
Вопрос
Этот попался мне на днях.Что бы вы ожидали получить от следующего?
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'
При этом выводится "Равно".
Не связан с StackOverflow