2014-09-30 79 views
0

我想创建一个查询,输出(1)值(2)值是否存在或不存在。我试过输出值和它是否存在SQL Server 2008数据库

SELECT CASE WHEN EXISTS (
    SELECT [IP_ADDR1_TEXT] 
    FROM [dbo].[V_SEM_COMPUTER] 
    WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
) , [IP_ADDR1_TEXT] 
THEN CAST(1 AS BIT) 
ELSE CAST(0 AS BIT) END 

而且我得到错误。谢谢。

澄清

当我尝试

SELECT CASE WHEN EXISTS (
    SELECT [IP_ADDR1_TEXT] 
    FROM [dbo].[V_SEM_COMPUTER] 
    WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
) 
THEN CAST(1 AS BIT) 
ELSE CAST(0 AS BIT) END 

它仅输出1或0。我想它要输出的IP地址,和1或0,这取决于它是否存在。

IP Address EXISTS 
10.10.10.10 1 

回答

1

这应该做的工作

SELECT 
CASE WHEN COUNT(distinct [IP_ADDR1_TEXT]) > 0 THEN CAST(1 AS BIT) 
ELSE CAST(0 AS BIT) END AS Some_blah 
    FROM [dbo].[V_SEM_COMPUTER] 
    WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 

你已经尝试过什么,也能发挥作用。只需提及CASE之前的表格如下

SELECT [IP_ADDR1_TEXT], 
    CASE WHEN EXISTS (
    SELECT [IP_ADDR1_TEXT] 
    FROM [dbo].[V_SEM_COMPUTER] 
    WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
) 
THEN CAST(1 AS BIT) 
ELSE CAST(0 AS BIT) END 
FROM [dbo].[V_SEM_COMPUTER] 
WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
0

这是一个简单的方法来做到这一点。

SELECT cast(count([IP_ADDR1_TEXT]) as bit) as IP_Exists 
FROM [dbo].[V_SEM_COMPUTER] 
WHERE [IP_ADDR1_TEXT] = '10.10.10.10' 
相关问题