oracle正则表达式替换(仅保留az)

lea*_*sql 5 regex oracle

我在last_name列中有数据.

这些数据来自在线,有时用户会复制粘贴word文档中的姓氏.当姓氏具有单引号时,这是一个问题.不知何故单词文档中的单引号很奇怪.

我想在我的选择查询中编写一个oracle正则表达式替换,这样它可以替换last_name列中的所有内容,但只保留(az或AZ).

这可行吗?

lea*_*sql 12

最后我跟着这个:

REGEXP_REPLACE(mbr_last_name,'[^a-zA-Z'']','') replaced_last_name 
Run Code Online (Sandbox Code Playgroud)

我保持一个到Z到A和一个单引号

  • 您可以使用regexp_replace(mbr_last_name,'[^ [:alpha:]'']'),只是为了更简洁一些. (2认同)

Kar*_*arl 2

“奇怪”是指它不是正常的单引号吗?Word 默认使用一些非常愚蠢的字符(称为“智能引号(google)”)。它们看起来有点像标准引号,但在与 ASCII(例如 UTF-8)相互转换时具有不同的行为

要在 SQL 中识别它们,请使用函数 ASCIISTR 进行选择,并在表单中查找子字符串<backslash><4 digits> (这适用于具有 UTF-8 和 simialr 字符的数据库,我不确定它在具有 ASCII NLS 参数的数据库中的返回情况)

select asciistr(COLUMN) from table
Run Code Online (Sandbox Code Playgroud)

我在最近所做的一些工作中使用了以下代码来删除它们

update jiraissue
set summary = replace(asciistr(summary), '\2013','-')
where asciistr(summary) like '%\2013%';`)
Run Code Online (Sandbox Code Playgroud)

华泰