我在last_name
列中有数据。
此数据来自在线,有时用户会复制粘贴word文档中的姓氏。当姓氏具有单引号时,这是一个问题。不知何故单词文档中的单引号很奇怪。
我想在我的选择查询中编写一个oracle正则表达式替换,以便它替换last_name
列中的所有内容,但只保留(a-z或A-Z)。
这可行吗?
答案 0 :(得分:12)
最后我接受了这个:
REGEXP_REPLACE(mbr_last_name,'[^a-zA-Z'']','') replaced_last_name
我保持a到z A到Z和单引号
答案 1 :(得分:2)
'怪异'你的意思是它不是正常的单引号吗? Word默认使用一些非常愚蠢的字符(称为“Smart quotes(google)”。它看起来有点像标准引号,但在转换为ASCII和从ASCII转换时具有不同的行为,例如UTF-8
要在SQL中识别它们,请使用函数ASCIISTR进行选择,并查找<backslash><4 digits>
形式的子字符串(这适用于带有UTF-8和simialr字符的数据库,我不确定它是什么使用ASCII NLS参数在数据库中返回)
select asciistr(COLUMN) from table
我在最近的一些工作中使用了以下代码删除它们
update jiraissue
set summary = replace(asciistr(summary), '\2013','-')
where asciistr(summary) like '%\2013%';`)
HTH
答案 2 :(得分:1)
例如,您可以使用regexp_replace运算符:
select regexp_replace('foobar1000!!!!','[[:cntrl:]]|[[[:digit:]]|[[:punct:]]') from dual;
REGEXP_REPLACE('FOOBAR1000!!!!','[[:CNTRL:]]|[[[:DIGIT:]]|[[:PUNCT:]]')
-----------------------------------------------------------------------
foobar
答案 3 :(得分:0)
值得查看CONVERT函数,它将在字符集之间进行转换。您可以转换为“普通”7位ASCII字符以删除异常。
例如
从中选择转换('êê','US7ASCII') 双