处理多值字段时的SQL查询语法

时间:2017-06-02 20:05:42

标签: sql oracle

我正在构建一个SQL Developer查询来检索具有指定状态的记录'。也可以选择多个值。如何更新我的查询以包含多个"状态"值?以分号分隔,即关闭;未决

这是我的查询,它只返回具有单一状态的记录:

Select * from LOGS where Status= 'Off' or Status = 'Pending' or Status = 'ON'; 

2 个答案:

答案 0 :(得分:1)

Select * from LOGS where Status= 'Off' and Status = 'Pending' and Status = 'ON'; 

你必须代表OR而不是AND,同一列不能在同一行上有这3个值

   Select * from LOGS where Status= 'Off' or Status = 'Pending' or Status = 'ON'; 

此更改将允许您获取这3个状态中的任何一个有效的每个LOGS行

如果您的意思是状态可以有多个值,例如“关闭;待定;开启”,您只需要:

 Select * from LOGS where Status like '%Off%' or Status like '%Pending%' or Status like '%ON%'; 

这意味着“将所有已关闭的状态,即使它处于离线状态,123Off123”以及其他情况等等,所以要小心你的状态

答案 1 :(得分:0)

怎么样:

Select * from LOGS
where
    concat('; ', Status,'; ') like '%; Off; %' or
    concat('; ', Status,'; ') like '%; Pending; %' or 
    concat('; ', Status,'; ') like '%; On; %'    ;

或者更好

Select * from LOGS
where
    REGEXP_LIKE (concat('; ', Status,'; '),'; Off; |; Pending; |; On; ')