gpt4 book ai didi

oracle - 将德语特殊字符转换为 Oracle SQL/PL-SQL 中的英语等效字符

转载 作者:行者123 更新时间:2023-12-01 12:31:36 25 4
gpt4 key购买 nike

我想将表格中某一列的所有德文字符替换为对应的英文字符。当我尝试使用 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 charmapecho $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 不支持欧元货币符号。

关于oracle - 将德语特殊字符转换为 Oracle SQL/PL-SQL 中的英语等效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com