我面临一个比较问题,我不知道如何强制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字节(
COL_CRD_ID:VARCHAR2(30字节(
下面是一个记录的示例
x |y |z
17140974|"17140974 " |no
当我复制时,第二个显示双引号
这听起来像是ASCII和Unicode的问题,当使用varchar2时,需要在像这样的替换之前使用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, ' ','')
您有双引号和空格,因此需要删除这两个空格。translate()
方便于:
where x = translate(y, 'a "', 'a')
这里有一个db<gt;不停摆弄