2011-05-21 158 views
0

我在我的項目中使用IfExistsTable函數;以查看錶格的存在。SELECT語句返回ID

爲此,我使用Select語句如下。

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

之後我拿RecCount返回的號碼。到現在爲止的數字是10

所以我在TrueFalse轉數字。

現在突然返回的號碼是2,我不明白這是什麼意思。

請問有人幫忙嗎?

+0

是是是您非常正確。 – 2011-05-21 18:45:24

回答

1

的數字表示符合您喜歡聲明表的數量。例如,如果你有表

  • 小工具
  • 產品
  • WidgetsInProducts

又通「部件」到你的查詢,這將同時匹配表「部件」和「 WidgetsInProducts」。這不是你想要的行爲。

要解決這個問題,您需要做一個完全匹配而不是像@Alex Aza那樣在他的答案中顯示。

+0

是的,你有我的問題的答案。非常感謝你給我一個 – 2011-05-21 18:54:15

2

Count返回表中的行數。你不應該期望它只是0或1。

你可以爭辯說,不能再多一個表,只有一個名字,但問題是你的查詢使用like '%TableName%'。因此,如果您有表MyTableBestTable,並且您想檢查是否退出Table,count的結果將爲2,儘管沒有這樣的名稱的表。

你可以更新的select語句看起來像這樣:

select case when exists(select * from sys.tables where name = 'TableName') then 1 else 0 end 
+0

是的,我可以使用它作爲替代方法。但我不想改變我的代碼;最重要的是那個數字是多少?它代表什麼? – 2011-05-21 18:44:34

+0

@Lefteris Gkinis - 在我的答案中增加了更多細節。如果你想讓它工作,恐怕你需要改變你的查詢。 – 2011-05-21 18:49:43

+0

是的,你的答案是最準確的。我怎麼說...它是在正確的道路上...... @Chris Pebble給我我想要的答案。非常感謝你,給你一個。 – 2011-05-21 18:56:03

0

喜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 
} 

+0

@patric。我必須知道的是數字的含義。現在我擁有了它。我非常感謝你的回答。 – 2011-05-23 10:37:58

+0

@Lefteris Gkinis ...你是最受歡迎的,但我想你想讓代碼運行.. :) – 2011-06-29 13:25:18