【问题标题】:How to ignore spaces when comprising two VARCHAR2 values包含两个 VARCHAR2 值时如何忽略空格
【发布时间】:2020-09-30 10:23:16
【问题描述】:

我遇到了比较问题, 我不知道如何强制 oracle 忽略空格

我尝试过修剪功能和替换(列,'',''),但仍然

即使我尝试将 to_char 用于两列

这个查询

select 
replace(nvl(MEMBER_CARD_NO,'x'),' ','') x,
replace(nvl(COL_CRD_ID,'x'),' ','') y,
case when 
replace(nvl(MEMBER_CARD_NO,'x'),' ','')  =  
replace(nvl(COL_CRD_ID,'x'),' ','')  then 'y' else 'no'end z
from tb_sales
where
case when 
replace(nvl(MEMBER_CARD_NO,'x'),' ','')  =  
replace(nvl(COL_CRD_ID,'x'),' ','')  then 'y' else 'no'end ='no'

每列的数据类型如下所述

  • MEMBER_CARD_NO : VARCHAR2(30 BYTE)

  • COL_CRD_ID:VARCHAR2(30 BYTE)

以下是一条记录的示例

x       |y               |z
17140974|"17140974  "    |no

第二个在我复制时显示双引号

【问题讨论】:

    标签: sql string oracle comparison


    【解决方案1】:

    听起来,当使用 varchar2 时,ASCII 和 Unicode 的问题裁判需要在像这样替换之前使用 char 'N'

    select 
    replace(nvl(MEMBER_CARD_NO,'x'), '\W','') x,
    replace(nvl(COL_CRD_ID,'x'),'\W','') y,
    case when 
    replace(nvl(MEMBER_CARD_NO,'x'),'\W','')  =  
    replace(nvl(COL_CRD_ID,'x'),'\W','')  then 'y' else 'no'end z
    from tb_sales
    where
    case when 
    replace(nvl(MEMBER_CARD_NO,'x'),'\W','')  =  
    replace(nvl(COL_CRD_ID,'x'),'\W','')  then 'y' else 'no'end ='no' 
    

    如果它不起作用,请使用 regexp_replace(coulmn, '[[:space:]]*','') 而不是 replace(coulmn, ' ','')

    【讨论】:

    • 感谢您的回复,我刚刚尝试了您的更改,我收到此错误错误从第 11 行开始在命令中 - replace(nvl(MEMBER_CARD_NO,'x'),N' ',N '' 错误报告 - 未知命令
    • 亲爱的,不再有双引号并且代码可以正常工作,但主要问题是由于空格导致的值不相等。你有什么推荐
    • 你想用regexp_replace(coulmn, '[[:space:]]*','') 代替replace(coulmn, ' ','')
    • 我想使用任何可以解决问题的功能
    【解决方案2】:

    你有双引号空格,所以你需要删除这两个。 translate() 很方便:

    where x = translate(y, 'a "', 'a')
    

    Here 是一个 dbfiddle。

    【讨论】:

    • 感谢您的回复。我如何在我的命令中使用 translate,因为我这样做了translate(nvl(MEMBER_CARD_NO,'x'),'a "','a') 仍然没有结果,尽管我复制它时没有双引号
    • @Marama-zaid 。 . .我添加了一个 dbfiddle.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2016-10-21
    相关资源
    最近更新 更多