带有基于名称的WHERE子句的SQL select语句

时间:2016-10-23 01:28:40

标签: sql oracle

我有一个表格TBL_TEST,其中有一列NAME有5行,这些行的值为' Balkhab',' Gosfandi',& #39; Sancharak',' Aqcha'

我想编写一个带有WHERE子句的查询,当其中class的值与TBL_TEST中NAME列中的一个值匹配时,它应该只显示该值,但是当它出现时不匹配然后它应该显示表中的所有值,下面是select语句,它没有按预期工作。

SELECT NAME 
FROM TBL_TEST 
WHERE NAME = 'Balkhab'  OR NAME != 'Balkhab'

picture

4 个答案:

答案 0 :(得分:1)

我怀疑你想要这样的东西:

SELECT NAME
FROM TBL_TEST
WHERE NAME = 'Balkhab'
UNION ALL
SELECT NAME
FROM TBL_TEST
WHERE NOT EXISTS (SELECT 1 FROM TBL_TEST WHERE NAME = 'Balkhab');

答案 1 :(得分:1)

  IF Exists(select 'X' FROM TBL_TEST WHERE NAME = 'Balkhab') 
        SELECT NAME from TBL_TEST WHERE NAME = 'Balkhab' 
    ELSE 
         SELECT NAME FROM TBL_TEST

答案 2 :(得分:1)

你可以在下面试试这个

select * 
from table where not exists (select name from table where name = 'Aqcha') or   
name ='Aqcha'

答案 3 :(得分:1)

您可以使用一个参数为其编写存储过程。

Create procedure(@Name varchar(max))
As 
begin
    If(Isnull(@name, 0))
    Begin
        If exists (select 1 from TBL_TEST xx where xx.name = @name)
        Begin
            Select * 
            From TBL_TEST 
            Where name = @name
        End
        Else
        Begin
            Select * 
            From TBL_TEST
        End
    End
    Else
    Begin
        Select * from TBL_TEST
    End
End

将您的名称作为参数传递给存储过程以获取require结果 存储过程是最佳选择,因为您可以避免网络流量,减少带宽,因为您只能通过需要参数并获得所需的结果