У меня есть оператор выбора, который используется в GridView с помощью хранимой процедуры:Подстановочные знаки SQL, не возвращающие данные?
SELECT * FROM T_Computer WHERE (ISTag LIKE '%' + @ISTag + '%') AND Status <> 'Trashed' AND Status <> 'Sold' AND Status <> 'Stored'
В @ISTag, NCHAR определяется значением текстового поля, если текстовое поле пусто у меня есть значение по умолчанию установлено значение %, что, по моему мнению, должно по существу отрицать эту часть предложения where и возвращать все строки, кроме тех, которые отрицаются столбцом Status. Вместо этого он ничего не возвращает. Если я удалю «+ @ISTag +», он сделает то, что я хочу.
В принципе, три% ничего не возвращают, а 2% возвращают то, что я хочу. Как мне это исправить?
Вы не говорите, как вы объявляете @IsTag: char или varchar? Если вы объявляете его char, тогда см. Мой ответ. Если это варчар, тогда происходит что-то еще. – Cyberherbalist
Объявлено как nchar – Shawn
Та же разница. char и nchar функционально одинаковы в этом случае. В моем тестовом примере я получаю тот же результат либо с результатом, например с вашим. Используйте nvarchar, как указано в моем ответе, и посмотрите, не изменилось ли это. – Cyberherbalist