Oracle SQL-where条件中的参数,用于从一个值中搜索两个值

Oracle SQL-where条件中的参数,用于从一个值中搜索两个值,sql,oracle,parameters,conditional-statements,where,Sql,Oracle,Parameters,Conditional Statements,Where,我有这样的例子:一个公司在I_COMPANY表中被标识,在IC_COMPANY_code列中有一个唯一的代码,在IC_COMPANY_DESC列中有一个描述 记录示例: IC_COMPANY_DESC='ATLANTA'由两个字母标识 IC_公司代码=901和902 IC_COMPANY_DESC='TORONTO',由两个 IC_公司代码=903和904 在本例中,查询SQL,在WHERE条件下,我想插入一个参数:IC_COMPANY_CODE='901'和查询搜索结果,必须显示在数据集9

我有这样的例子:一个公司在I_COMPANY表中被标识,在IC_COMPANY_code列中有一个唯一的代码,在IC_COMPANY_DESC列中有一个描述

记录示例:

  • IC_COMPANY_DESC='ATLANTA'由两个字母标识 IC_公司代码=901和902
  • IC_COMPANY_DESC='TORONTO',由两个 IC_公司代码=903和904
在本例中,查询SQL,在WHERE条件下,我想插入一个参数:IC_COMPANY_CODE='901'和查询搜索结果,必须显示在数据集901和902记录中,如何编写此查询

SELECT IC_COMPANY_CODE, IC_COMPANY_DESC
FROM I_COMPANY
WHERE IC_COMPANY_CODE  = :IC_COMPANY_CODE -- > how to insert 901 string and display result for 901 and 902?

谢谢

您可以在子查询中获取描述,并返回包含描述的所有记录

SELECT IC_COMPANY_CODE, IC_COMPANY_DESC
FROM I_COMPANY
WHERE IC_COMPANY_DESC IN (SELECT IC_COMPANY_DESC
                          FROM I_COMPANY
                          WHERE IC_COMPANY_CODE  = :IC_COMPANY_CODE)
您可以使用子查询(假设给定的
IC\u COMPANY\u code
只有一行)

或将表连接到自身:

SELECT C2.IC_COMPANY_CODE,  IC_COMPANY_DESC
FROM I_COMPANY C1
  INNER JOIN I_COMPANY C2
    USING (IC_COMPANY_DESC)
WHERE C1.IC_COMPANY_CODE = :IC_COMPANY_CODE

我已决定在以下情况下应用此选项:

DECODE(IC_COMPANY_CODE,'901','902','903','904',IC_COMANY_CODE)=:IC_COMANY_CODE

感谢您的支持

如果不会有超过几十个重复代码,您可以将其设置为VARCHAR参数,并传入逗号分隔的字符串,然后用谷歌搜索如何在WHERE子句中使用它。或者,如果只有两条记录,在IC_公司代码-1和IC_公司代码+2之间做一个比较
DECODE(IC_COMPANY_CODE,'901','902','903','904',IC_COMANY_CODE)=:IC_COMANY_CODE