PL SQL 删除非 Ascii 字符,但不删除回车符

Posted

技术标签:

【中文标题】PL SQL 删除非 Ascii 字符,但不删除回车符【英文标题】:PL SQL Remove Non Ascii character but not carriage returns 【发布时间】:2021-07-09 08:08:19 【问题描述】:

我正在尝试使用 PL SQL 删除非 ascii 字符。我尝试使用下面的代码,但它也删除了我不想要的回车。请指教。

select REGEXP_REPLACE('sample string', '[^[:print:]]', '') from dual;

【问题讨论】:

“在键盘上找不到”是什么意思?只有a-zA-Z0-9?周围有很多不同类型的键盘,其中大多数还有特殊字符。 您好,抱歉。已经改述了我的问题。我的意思是像 À È Ì Ò Ù Ỳ Ǹ Ẁ 之类的字符或任何像心形或正方形这样的符号?不知道这个词对不对。 【参考方案1】:

将正则表达式更改为(不可打印或回车/换行)。

WITH t (txt) AS
(
SELECT 'Hello'||chr(13)||' World' FROM DUAL
)
select REGEXP_REPLACE(txt, '[^[:print:|\x0A|\x0B|`\x0D]]', '') from t; 

REGEXP_REPLA
------------
Hello
 World

很好解释here

【讨论】:

以上是关于PL SQL 删除非 Ascii 字符,但不删除回车符的主要内容,如果未能解决你的问题,请参考以下文章

从 Snowflake 中的字符串中删除非 ASCII 字符

从数据文件中删除非 ASCII 字符

如何从字符串中删除非 ASCII 字符?

从 pandas 列中删除非 ASCII 字符

如何使用正则表达式和 Notepad++ 删除所有非 ASCII 字符?

DB2 到 SQL 链接服务器 OpenQuery 非 Ascii 字符问题