Tsql использовать как с подстановочными знаками и конечный пробел? - PullRequest
5 голосов
/ 19 июля 2010

Я не могу заставить оператор like работать с пробелом и концевыми подстановочными знаками.Мой запрос выглядит следующим образом:

select * from Table where Field like 'Desc_%'

Данные разделены пробелами, например, Desc Top, Desc Bottom и так далее.Запрос работает, когда я использую шаблон «Desc_%», но не когда я использую шаблон «Desc%».Поле nvarchar (255).

Есть идеи?

EDIT

Оказывается, данные были разделены табуляцией, и когда я скопировал значение из 2008 Management Studio, он преобразовал вкладку в пространство.Тупая ошибка.Мне понравился совет [], поэтому я отметил его как ответ.Спасибо всем, я буду помнить, чтобы не доверять копии из сетки результатов.

Ответы [ 3 ]

3 голосов
/ 19 июля 2010

Используйте скобки '[' & ']', чтобы установить соответствующий односимвольный класс. В вашем случае SQL должен выглядеть следующим образом: «выберите * из таблицы, где поле как« Desc []% »»

РЕДАКТИРОВАТЬ: добавить образец, ссылка

CREATE TABLE #findtest (mytext  varchar(200) )

insert #findtest VALUES ('Desc r')
insert #findtest VALUES ('Descr')

select * from #findtest where mytext like 'Desc[ ]%'

DROP TABLE #findtest

(1 row(s) affected)

(1 row(s) affected)
mytext
--------
Desc r

(1 row(s) affected)

См. эту статью.

0 голосов
/ 19 июля 2010

Считаете ли вы явно, что вам нужен пробел, используя его значение ASCII?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%'
0 голосов
/ 19 июля 2010

Поскольку подчеркивание - это подстановочный знак из одного символа, а процент - это подстановочный знак из нескольких символов, они одинаковы ("%" и "_%").Это как если бы вы просили два последовательных символа подстановки.Не уверен, что понимаю ваш вопрос, но я не удивлен, что он не ведет себя так, как вы ожидаете.

...