我尝试使用REPLACE
从字符串中删除一些单词,例如“ HOMEMAKER”和“ HOUSEWIFE”。但是我没有把那些词改成空白。为什么会这样?
我想使用REPLACE
函数从EMPLOYER列中删除诸如' HOMEMAKER '和' HOUSEWIFE '之类的字符串,但是失败了。我也尝试过REGEXP_REPLACE,但再次失败。这些是我拥有的表(很抱歉,我想在这里构建表,但是某种程度上它不起作用)。
雇主
退货/ HOMEMAKER
HOMEMAKER / HOMEMAKER
自雇/自制者
我们的代码如下:
SELECT EMPLOYER,
CASE WHEN EMPLOYER LIKE '%HOUSE%WIFE%'
THEN REGEXP_REPLACE(EMPLOYER,r'HOUSE%WIFE',' ')
WHEN EMPLOYER LIKE '%HOME%MAKER%'
THEN REGEXP_REPLACE(EMPLOYER, r'HOME%MAKER', ' ')
ELSE '0'
END AS SIGN
FROM fec.work
WHERE EMPLOYER LIKE '%HOME%MAKER%'
OR EMPLOYER LIKE '%HOUSE%WIFE%'
GROUP BY 1,2;
我想要的结果是:
SIGN
退役/
/
自雇/
但是我在SIGN
中得到的列与EMPLOYER
完全相同。谁能告诉我为什么replace
函数没有进行任何更改?
答案 0 :(得分:1)
您应该使用类似
REGEXP_REPLACE(EMPLOYER, r'HOUSEWIFE|HOMEMAKER',' ')
您可以使用i
标志使此替换项不区分大小写
REGEXP_REPLACE(EMPLOYER, r'(?i)HOUSEWIFE|HOMEMAKER',' ')
答案 1 :(得分:0)
这些选项中的任何一个都适合您的情况。
with test as (
select 'EMPLOYER' as my_str union all
select 'RETIRED/HOMEMAKER' as my_str union all
select 'HOMEMAKER/HOMEMAKER' as my_str union all
select 'SELF-EMPLOYED/HOMEMAKER' as my_str
)
select
my_str,
REPLACE(REPLACE(my_str, 'HOUSEWIFE', ' '), 'HOMEMAKER', ' ') as replaced_str,
REGEXP_REPLACE(my_str, r'HOUSEWIFE|HOMEMAKER', ' ') as regexed_str
from test