【问题标题】:Oracle Insert Φ symbol into tableOracle 将 Φ 符号插入表中
【发布时间】:2015-03-03 15:55:33
【问题描述】:

我在向表中插入 Φ 符号时遇到问题...
我试过了
"插入表 (SYMBOL) 值 ('Φ');"

但是表格中的结果是符号''
谢谢!

【问题讨论】:

  • 您的数据库和国家字符集是什么,列是什么数据类型,您的客户端使用什么字符集?您确定它插入了一个 ?,而不仅仅是在您查询时向您显示?
  • 试试这个页面GREEK CAPITAL LETTER PHI (U+03A6) Font Support检查你当前的字体是否能够显示字符。

标签: oracle insert special-characters symbols


【解决方案1】:

首先检查您的数据库是否能够存储此字符。你可以这样做

SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET';

AL32UTF8UTF8AL16UTF16WE8ISO8859P7 等字符集能够存储希腊字符。

WE8ISO8859P1US7ASCIIWE8MSWIN1252 等字符集能够存储希腊字符。在这种情况下,您无法将它们插入到您的数据库中,并且您的任务到此结束。

另一个简单的测试是这样的 SQL 命令:

SELECT 
    ASCIISTR(CAST(UNISTR('\03A6') AS VARCHAR2(4))) AS VARCHAR_SUPPORT, 
    ASCIISTR(CAST(UNISTR('\03A6') AS NVARCHAR2(4))) AS NVARCHAR_SUPPORT,
    CAST(UNISTR('\03A6') AS VARCHAR2(4)) AS VARCHAR_CHAR,
    CAST(UNISTR('\03A6') AS NVARCHAR2(4)) AS NVARCHAR_CHAR
FROM dual;

VARCHAR_SUPPORT NVARCHAR_SUPPORT VARCHAR_CHAR NVARCHAR_CHAR
--------------- ---------------- ------------ -------------
\00BF           \03A6            ¿            Φ            

1 row selected.

如果您的输入代码点(在此示例中为 U+03A6,即 Unicode 字符 GREEK CAPITAL LETTER PHI)等于 ASCIISTR 的结果,则您的数据库可以存储该字符。在我的示例中,我可以将“Φ”插入NVARCHAR2(或NCHAR)列,但不能插入VARCHAR2(或CHAR)列。

如果您的数据库能够存储希腊字符,您始终可以在 SQL*Plus 中执行此命令:

INSERT INTO MY_TABLE VALUES (UNISTR('\03A6'));

根据您的要求,这可能是一项非常乏味的工作。我认为这种方法只是一个例外情况。

我不建议直接在 SQL*Plus 中输入这样的命令:

INSERT INTO MY_TABLE VALUES ('Φ');

在某些情况下它可能会起作用。到目前为止,我还没有完全理解我的 PC 的编码和 SQL*Plus 的编码之间的关系。

更安全的方法是将此类 SQL 语句写入 .sql 文件并保存。 为了运行它,请根据该文件的字符集设置您的NLS_LANG 环境变量。例如,当您将其保存为 UTF-8 然后运行(对于 Windows)

c:\>set NLS_LANG=.AL32UTF8

c:\>sqlplus user/pwd@DB @My_Inserts.sql

如果您的.sql-文件保存为ANSI,那么在“西方PC”上会是这样的:

c:\>set NLS_LANG=.WE8MSWIN1252

c:\>sqlplus user/pwd@DB @My_Inserts.sql

ANSIEncoding其实就是“当前本地编码”的意思。如果您没有本地代码页,您可以使用以下命令查询它:

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

C:\>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多