2009-03-26 3 views
1

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

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

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 

EDIT:.. Спасибо всем, все эти ответы помогли =)

ответ

5

Попробуйте только

WHERE C_CredCardSSN LIKE @sp1 

или.

WHERE C_CredCardSSN LIKE @sp1+'%' 

в зависимости от того, почему у вас есть «%» там (спасибо комментарий Joel Coehoorn за указание на «%» я пропустил).

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

WHERE C_CredCardSSN LIKE ''[email protected] 
+0

только 1 из 2 проблемы фиксированных здесь –

+0

Doh! Хороший улов. – MarkusQ

+0

Нет проблем;) Теперь выглядит хорошо. –

4

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

WHERE C_CredCardSSN LIKE @sp1 + '%' 
2

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

WHERE C_CredCardSSN like @sp1 + '%' 

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

WHERE C_CredCardSSN like '%' + @sp1 + '%' 
1

Попробуйте добавить «%» в тексте перед добавлением его в качестве параметра запроса:

SqlParameter p = new SqlParameter("@sp1"); 
p.value = C_CredCardSSNText + "%"; 
Смежные вопросы