[英]Oracle SQL query to return rows that matches a column value having not a digit
[英]sql query to return single value based on column it matches
我有一个要求,如果查询字符串匹配column1,则返回1。如果它匹配2列,则返回2,否则,如果匹配3列则返回3。
表strunctre:
col1 col2 col3
11 12 13
22 23 24
如果我的查询字符串是23,那么我期望它的返回值2与col2匹配。
如下所示:
select 1
from table1
where col1=querystring
and orderid=xxx
or select 2 from table1
where col2=querystring
and orderid=xxx
or select 3 from table1
where col3=querystring and orderid=xxx
基本上我期待一个查询,该查询根据匹配的列返回单个值。
因为我的数据库技能不是很好,所以它在SQL中可行吗?
非常感谢您的帮助。
有两种方法。 如果保证一次最多匹配一列,则UNION将起作用:
SELECT 1 AS SomeCol
FROM table1
WHERE col1 = querystring
AND orderid = xxx
UNION
SELECT 2
FROM table1
WHERE col2 = querystring
AND orderid = xxx
UNION
SELECT 3
FROM table1
WHERE col3 = querystring
AND orderid = xxx;
如果可能发生多个匹配,则这是另一种方法(请注意,优先级现在是col1,col2,col3等):
SELECT CASE
WHEN col1 = querystring THEN 1
WHEN col2 = querystring THEN 2
WHEN col3 = querystring THEN 3
END AS SomeCol
FROM table1
WHERE orderid = xxx;
请尝试使用case
declare @var int
set @var=23
select
case @var when col1 then 1
when col2 then 2
when col3 then 3 end
from YourTable
where
col1=@var OR
col2=@var OR
col3=@var
尝试在查询中使用IF-ELSE
条件,并检查传递的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.