Sql Query Help, синтаксическая ошибка около = - PullRequest
3 голосов
/ 11 июля 2011

почему это не работает?Это что-то в синтаксисе командной строки около =, но я не могу понять это, онлайн-примеры выглядят точно так же. Редактировать: Активирован в столбце.

примеров из Как выбрать данные из базы данных с множеством параметров фильтра?

private void btnDist_Click(object sender, EventArgs e)
{
    string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In = '#NA'";
    SqlDataAdapter adapter = new SqlDataAdapter(cmdText, GetConnection());
    DataSet distDS = new DataSet();
    adapter.Fill(distDS);

    dataGridView1.DataSource = distDS.Tables[0].DefaultView;
}

Ответы [ 6 ]

6 голосов
/ 11 июля 2011

Если имя столбца в вашей базе данных - Activated In (с пробелом), вам необходимо использовать квадратные скобки при обращении к имени объекта / столбца в запросах, например:

SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'

Это потому, что SQL обрабатывает пробелы как разделитель в языке запросов - квадратные скобки используются для «экранирования» этого (и других символов) в именах.

В качестве альтернативы, если столбец просто называется Activated, тогда выне нужен бит IN - либо проверьте на равенство, либо проверьте, находится ли значение в заданном диапазоне, но не делайте и то, и другое.

-- Use this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'
-- Or this
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated IN ('#NA', 'Some other value')
4 голосов
/ 11 июля 2011

изменить ваш запрос на * Нет необходимости IN ключевое слово

SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'"

IN - используется, если вы хотите отфильтровать данные из списка или есть подзапрос.

2 голосов
/ 11 июля 2011

Ключевое слово In используется следующим образом:

...AND Activated IN ('#NA')
...AND Activated IN ('#NA', 'other filter value', 'more filter values')
1 голос
/ 11 июля 2011

Активирован В это столбец?тогда это должно было быть ActivatedIn или [Activated In]

1 голос
/ 11 июля 2011

Удалить = после In

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In ('#NA')";

Возможно, вы также захотите использовать = вместо In, поскольку вы указываете только один элемент.

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'";

Если Activated In является столбцом, используйте:

string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'";
1 голос
/ 11 июля 2011

Activated In = '#NA'"

Это должно быть Activated In ('#NA')" или Activated = '#NA'".
Оператор In в SQL зарезервирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...