【问题标题】:LIKE operator is not fetching results in oracleLIKE 运算符未在 oracle 中获取结果
【发布时间】:2019-08-28 12:26:33
【问题描述】:

我想通过应用LIKE 运算符来获得结果。但它没有给我结果。

以下是我的查询。

Select * from TBL_ZONAL_HEAD_INFO where upper(ZONE_HEAD_NAME) LIKE '%ami%';

上面的查询没有从下面的数据中获取任何结果

过程中的查询

Select * from TBL_ZONAL_HEAD_INFO where upper(ZONE_HEAD_NAME) LIKE '%' || upper(P_ZONENAME) || '%';

【问题讨论】:

    标签: oracle sql-like


    【解决方案1】:

    upper(ZONE_HEAD_NAME)全是大写,所以它永远不会是LIKE '%ami%'(全是小写)。

    【讨论】:

    • 如果是这样'%Ami%' ??
    • upper('rami')'RAMI',所以也不会匹配 %Ami%
    【解决方案2】:

    你必须用大写来匹配它。

    SELECT
        *
    FROM
        TBL_ZONAL_HEAD_INFO
    WHERE
        UPPER(ZONE_HEAD_NAME) LIKE upper('%Ami%'); -- used upper case AMI here
    

    干杯!!

    【讨论】:

    • 如果是这样'%Ami%' ??
    • 更新了我的答案。请立即查看
    【解决方案3】:

    使用LOWER 而不是UPPER

    Select * from TBL_ZONAL_HEAD_INFO where LOWER(ZONE_HEAD_NAME) LIKE '%ami%';
    

    或者在LIKE中使用大写:

    Select * from TBL_ZONAL_HEAD_INFO where UPPER(ZONE_HEAD_NAME) LIKE '%AMI%';
    

    或将LIKE 的两侧包装在同一个大小写转换函数中:

    Select * from TBL_ZONAL_HEAD_INFO where UPPER(ZONE_HEAD_NAME) LIKE UPPER('%Ami%');
    

    【讨论】:

    • 如果是这样'%Ami%' ??
    • @BN 更新了一种应该适用的方法。
    【解决方案4】:

    试试这个:

    Select * from TBL_ZONAL_HEAD_INFO where upper(ZONE_HEAD_NAME) LIKE upper('%ami%');
    

    您已将 upper 用于 ZONE_HEAD_NAME 并使用了 '%ami%',它永远不会返回任何记录。
    因此,要么在 upper() 函数中同时创建,要么在此处使用大写进行选择查询,例如 '%AMI%'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2021-07-22
      • 2022-12-15
      相关资源
      最近更新 更多