Параметризованная ошибка SQL-запроса - PullRequest
1 голос
/ 26 марта 2009

У меня есть приложение, которое создает динамические параметризованные запросы SQL. Следующий запрос возвращает внутреннее исключение «синтаксическая ошибка в или около» = «...

Мне кажется, я назначаю параметр для имени столбца, но я не уверен. Код следует.

SELECT TOP 50 77 AS Repository, DocID, LastFileDate, ImageCount,
 LockedUserID,   DocClass, Offline, FileType, OrigFileName, C_CredCardSSN, C_CredCardName,C_CredCardDocType, C_CredCardDocDate, C_CredCardStatus 

FROM D77 

WHERE C_CredCardSSN 

LIKE C_CredCardSSN = @sp1% 

ORDER BY C_CredCardSSN,C_CredCardName

РЕДАКТИРОВАТЬ: Спасибо всем. Все эти ответы помогли. =)

Ответы [ 4 ]

5 голосов
/ 26 марта 2009

Попробуйте просто

WHERE C_CredCardSSN LIKE @sp1

или

WHERE C_CredCardSSN LIKE @sp1+'%'

в зависимости от того, почему у вас там был "%" (спасибо комментарию Джоэла Кехорна за указание на "%", который я пропустил).

Или (в ответ на ваш комментарий) возможно:

WHERE C_CredCardSSN LIKE ''+@sp1
4 голосов
/ 26 марта 2009

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

WHERE C_CredCardSSN LIKE @sp1 + '%'
2 голосов
/ 26 марта 2009

Попробуйте это:

WHERE C_CredCardSSN like @sp1 + '%'

Это найдет ваш C_CredCardSSN, только если первые несколько символов верны. Чтобы найти что-либо в этом значении, попробуйте это так

WHERE C_CredCardSSN like '%' + @sp1 + '%'
1 голос
/ 26 марта 2009

Попробуйте добавить '%' к тексту, прежде чем добавить его в качестве параметра в запрос:

SqlParameter p = new SqlParameter("@sp1");
p.value = C_CredCardSSNText + "%";
...