oracle之将德语特殊字符转换为 Oracle SQL/PL-SQL 中的英语等效字符
我想将表格中某一列的所有德文字符替换为对应的英文字符。当我尝试使用 Replace() 函数时,它没有返回富有成效的结果。 我想将所有德语特殊字符替换为 - Ä Ö Ü ö ä ü ß 到 Ae Oe Ue oe ae ue ss。请让我知道如何执行该操作?我需要更改任何数据库设置吗?
请在下面找到一些结果:
select replace('a b c d e ä f g ö','ä','ae') from dual;
Output:
REPLACE('ABCDEDFGV','D','AE')
a b c ae e ae f g v
我正在使用 Toad 作为数据库工具。以下是一些数据库参数:
PARAMETER VALUE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8ISO8859P1
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE GERMAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_RDBMS_VERSION 9.2.0.5.0
NLS_SAVED_NCHAR_CS WE8ISO8859P1
请您参考如下方法:
您的终端字符集与您的 NLS_LANG
字符集不匹配。他们必须匹配。你可以这样做:
C:\>chcp
Active code page: 850
C:\>set NLS_LANG=.WE8PC850
C:\>sqlplus user/pwd@DB
SQL> select replace('a b c d e ä f g ö','ä','ae') from dual;
当您在 Linux/Unix 上工作时,chcp
等效于 locale charmap
或 echo $LANG
。您还可以更改当前代码页,例如chcp 65001
用于 UTF-8。
一些常见的对是:
代码页 850:(windows 默认)
chcp 850
->WE8PC850
代码页 1252:
chcp 1252
->WE8MSWIN1252
ISO-8859-1:
chcp 28591
->WE8ISO8859P1
ISO-8859-15:
chcp 28605
->WE8ISO8859P15
UTF-8:
chcp 65001
->AL32UTF8
无论您使用哪种方式,都可以根据您的终端字符集更改 NLS_LANG,反之亦然。通过 NLS_LANG=.WE8PC850
,您不会覆盖您当前的语言和地区。当然你也可以做 NLS_LANG=GERMAN_GERMANY.WE8PC850
在您的情况下,chcp 28591
-> WE8ISO8859P1
可能是“最佳”,因为这样您就可以使用数据库支持的任何字符。如果您使用其他设置,例如“Codepage 1252”你可能会得到一些不受支持的字符,例如¿
为 €
,因为 WE8ISO8859P1 不支持欧元货币符号。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。