【问题标题】:Oracle SQL - Parameter in where condition to search two values from oneOracle SQL - where 条件中的参数从一个值中搜索两个值
【发布时间】:2016-07-20 23:29:49
【问题描述】:

我有这种情况:公司在 I_COMPANY 表中标识,在 IC_COMPANY_CODE 列中具有唯一代码,在 IC_COMPANY_DESC 列中具有描述。

记录示例:

  • IC_COMPANY_DESC = 'ATLANTA',由两个标识 IC_COMPANY_CODE = 901 和 902。
  • IC_COMPANY_DESC = 'TORONTO',由两个标识 IC_COMPANY_CODE = 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?

谢谢

【问题讨论】:

  • 如果不会有超过几十个重复代码,您可以将其设为 VARCHAR 参数并传入逗号分隔的字符串,然后谷歌如何在 WHERE 子句中使用它。或者,如果只有两条记录,请执行 BETWEEN IC_COMPANY_CODE - 1 AND IC_COMPANY_CODE + 2

标签: sql oracle parameters conditional-statements where


【解决方案1】:

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

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)

【讨论】:

    【解决方案2】:

    您可以使用子查询(假设您对于给定的IC_COMPANY_CODE 只有一行)

    SELECT *
    FROM I_COMPANY
    WHERE IC_COMPANY_DESC = 
                              ( 
                                SELECT IC_COMPANY_DESC
                                FROM I_COMPANY
                                WHERE IC_COMPANY_CODE = :IC_COMPANY_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
    

    【讨论】:

      【解决方案3】:

      我已经决定在 WHERE 条件下应用这个:

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

      感谢您的支持

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 2021-12-06
        • 2022-01-13
        • 2015-05-15
        • 2021-05-13
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多