2012-03-21 72 views
2

什麼是最好的方式來形成我的SQL,所以它會返回一個布爾變成一個C#變量?或者更容易檢查.ExecuteScalar函數返回的標量值?窗體sql返回布爾到C#

基本上,想知道行是否存在或不存在。

select COUNT(COLUMN_NAME) from INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='Customers' 
AND 
COLUMN_NAME = 'birthdate' 
AND 
DATA_TYPE = 'datetime' 

例如,如果上面的行存在,則返回true。

+1

確實[這](HTTP://社會.msdn.microsoft.com/Forums/en/transactsql/thread/57470d82-d375-4f90-bf71-2b24e6237fe1)help? – 2012-03-21 01:43:10

回答

5

您可以在COUNT的結果,使用CASE檢查()來強制0或1:

SELECT CASE WHEN COUNT(COLUMN_NAME) = 0 THEN 0 ELSE 1 END AS IsColumPresent 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='Customers' 
AND 
COLUMN_NAME = 'birthdate' 
AND 
DATA_TYPE = 'datetime' 

這將返回0或1

+0

不錯,但是你也應該把整個大小寫塊包裝在 cast(... as bit) 否則,它會返回1或0作爲整數,而不是布爾型 – 2012-03-21 02:29:00

+0

@CDJorgensen C#會讀取0或1直接進入布爾沒有任何問題。 – tawman 2012-03-21 04:12:33