Оператор SQL Select не будет возвращать поля символов только числовые поля - PullRequest
2 голосов
/ 03 февраля 2012

Сегодня я весь день ломал голову над этим.У меня есть следующий код ASP, который использует ввод Request.Querystring из выпадающего списка для запуска оператора выбора.Строка запроса отображается в URL-адресе? =, Но будет работать только с числовыми столбцами в БД Microsoft SQL.Я не могу найти имена или простые 3-символьные поля.

CODE:
If Request.QueryString("m") > 0 Then
filterID = Request.QueryString("m")
filterColmn = "imDegree"
  Else filterID = 0
End If

If filterID > 0 Then
     SQlQuery = "SELECT * FROM v_InternImport WHERE iID IN (SELECT iID FROM v_InternImport WHERE " &   filterColmn & " = " & filterID & ")"
  End If
End If

Я понимаю, что это оператор выбора в качестве подэлемента выбора в нем, но я даже не могу получить верный исход из моей БД.Оператор select ссылается на то же представление, которое заполняет главную страницу asp, которая загружается раньше, и показывает нормально?

1 Ответ

1 голос
/ 03 февраля 2012

Когда вы передаете строку в SQL Server, вам нужно заключить ее в одинарные кавычки.

Когда вы передаете число, вы не используете кавычки.

Итак, когда вы говорите (обобщая)

SELECT * FROM table WHERE filterColumn = filterID

Вы должны отправить номер.

Чтобы соответствовать строке: SELECT * FROM table WHERE filterColumn = 'filterID'

Это предполагает, что вы решили любые другие проблемы, упомянутые комментаторами, о том, есть ли у вас значение в переменной filterID. Я полностью согласен с рекомендацией использовать параметризованные запросы.

Редактировать : одинарные кавычки заключаются в двойные кавычки.

SQlQuery = "SELECT * FROM v_InternImport 
WHERE iID IN (SELECT iID FROM v_InternImport 
WHERE " &   filterColmn & " = '" & filterID & "')"
...