Возвращенный идентификатор из оператора SELECT - PullRequest
0 голосов
/ 21 мая 2011

Я использую в своем проекте функцию IfExistsTable; чтобы увидеть существование таблицы.

Для этой цели я использую оператор Select следующим образом.

MASQLComm = New SqlCommand("SELECT COUNT(*) AS [RecCount] From sys.tables WHERE name Like '%" & tName & "%'", SQLConn)
RecCount = CInt(MASQLComm.ExecuteScalar)

После этого я беру номер, который вернулся в RecCount. До сих пор цифры были 1 и 0

И вот я перевёл числа в True или False.

Теперь неожиданно возвращается номер 2, который я не могу понять, что это значит.

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

Count возвращает количество строк в таблице.Вы не должны ожидать, что оно будет 0 или 1.

Вы можете утверждать, что не может быть более одной таблицы с одним именем, но проблема в том, что ваш запрос использует like '%TableName%'.Поэтому, если у вас есть таблицы MyTable и BestTable, и вы хотите проверить, выходит ли Table, результат подсчета будет равен 2, хотя нет таблицы с таким именем.

Вы можетеобновите оператор выбора, чтобы он выглядел так:

select case when exists(select * from sys.tables where name = 'TableName') then 1 else 0 end
1 голос
/ 21 мая 2011

Число представляет количество таблиц, которые соответствуют вашему утверждению. Например, если у вас есть таблицы

  • Виджеты
  • Продукты
  • WidgetsInProducts

И передайте «виджеты» в ваш запрос, он будет соответствовать таблице «Виджеты» и «WidgetsInProducts». Это не то поведение, которое вам нужно.

Чтобы решить эту проблему, вам нужно сделать точное совпадение, а не как, как продемонстрировал @Alex Aza в своем ответе.

0 голосов
/ 23 мая 2011

привет Lefteris Gkinis, если вы не хотите изменять свой запрос, вы можете проверить свою переменную RecCount соответственно, скажем

if(RecCount == 0)
{
// code what you were using for false condition 
}
else
{
// you got atleast one record 
// and in RecCount  you have number of matching rows
}

с помощью этого вида кода, который вы можете отобразить в соответствующей строкерассчитывать также.

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