[英]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.