ГДЕ пункт требует, как когда должны работать равные - PullRequest
2 голосов
/ 08 июля 2011

У меня есть запрос, который, я думаю, должен выглядеть следующим образом:

select *
from Requesters
where CITIZEN_STATUS = 'OS-IE ';

В поле CITIZEN_STATUS, тип данных которого varchar (15), есть пробел для этого конкретного значения. Я вставил его в Notepad ++ и посмотрел на него с помощью шестнадцатеричного редактора, и окончательный пробел действительно равен 0x20.

Чтобы запрос работал, я должен написать его так:

select *
from Requesters
where CITIZEN_STATUS like 'OS-IE%';

Итак, очевидно, у меня есть обходной путь, и вопрос не является актуальным. Но мне бы очень хотелось узнать, почему первый запрос не дает ожидаемого результата. У кого-нибудь есть какие-либо идеи?

Я должен упомянуть, что я использую SQL Server 2005 и при необходимости могу предоставить больше информации о конфигурации.

1 Ответ

0 голосов
/ 08 июля 2011

В MySQL 5 этот запрос работает.Тем не менее, он не различает в конце пробела.Запрос соответствует «OS-IE», а также «OS-IE».В SQL Server 2005 вы можете использовать регулярное выражение, которое определяет конец строки.Правильный символ для этого - знак доллара «$», чтобы указать, что вы действительно хотите пробел.Смотри http://msdn.microsoft.com/en-us/magazine/cc163473.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...