如何通过多列比较过滤记录时如何知道哪个列匹配

sur*_*one 2 sql oracle11g

我有一张表"table1"之类的

NAME COL1 COL2 COL3 COL4
A    1    2    3    4
Run Code Online (Sandbox Code Playgroud)

我想通过过滤表

"SELECT * FROM table1 where (COL1=1 OR COL2=1 OR COL3=1 OR COL4=1)"
Run Code Online (Sandbox Code Playgroud)

我希望结果是

NAME COL_NAME
A    COL1
Run Code Online (Sandbox Code Playgroud)

这可能是SQL语句吗?

das*_*ght 6

您不仅可以在选择列表中选择列,还可以使用表达式.例如,您可以使用此:

SELECT
    NAME, -- More columns as needed
    CASE
    WHEN COL1=1 THEN 'COL1'
    WHEN COL2=1 THEN 'COL2'
    WHEN COL3=1 THEN 'COL3'
    WHEN COL4=1 THEN 'COL4'
    ELSE NULL END AS COL_MATCH
FROM table1 where (COL1=1 OR COL2=1 OR COL3=1 OR COL4=1)
Run Code Online (Sandbox Code Playgroud)