无法向Oracle数据库中插入字符

jk9hmnmh  于 2023-03-17  发布在  Oracle
关注(0)|答案(3)|浏览(196)

我遇到了一个问题,插入一个Oracle数据库的字符。
INSERT操作成功完成,但是,当我执行SELECT时,得到的是n而不是n。
此外,我注意到执行:

select 'ñ' from dual;

给我“否”。

select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

给我“EE 8 MSWIN 1250”
我该如何插入?我希望避免修改数据库设置。
我唯一能让它工作的方法就是:
1.读取这输入.csv文件与它的windows-1250编码
1.更改编码为unicode
1.将字符串更改为unicode代码表示(其中为\00d1)
1.执行INSERT/UPDATE,将值从#3传递到UNISTR函数
当然,有一个更简单的方法来实现这一点。

yquaqz18

yquaqz181#

最简单的方法是,使用ASCII()找出字符的ASCII,然后插入use CHR()以转换回字符串。

SQL语句:

select ascii('ñ'),chr(50097) from dual;

输出:

ASCII('Ñ') CHR(50097)
---------- ----------
     50097 ñ

用来连接数据库的客户端很重要。有些客户端不支持这些字符。

fae0ux8s

fae0ux8s2#

在启动SQL*Plus之前,必须相应地设置代码页(使用chcp命令)和NLS_LANG环境参数:

chcp 1250
set NLS_LANG=.EE8MSWIN1250
sqlplus ...

然而,正如评论中已经给出的,Windows 1250不支持字符ñ。所以,这些值将不起作用。
不一定要将这些值设置为与数据库字符集相同,但是代码页和NLS_LANG必须匹配,即以下值也应该有效(因为它们都支持ñ

chcp 1252
set NLS_LANG=.WE8MSWIN1252
sqlplus ...

或支持任何UTF-8字符

chcp 65001
set NLS_LANG=.AL32UTF8
sqlplus ...

同样,EE 8 MSWIN 1250不支持字符ñ,除非列的数据类型为NVARCHAR2(或NCLOB),否则无法在数据库中存储ñ

mgdq6dx1

mgdq6dx13#

数据库字符集支持该字符吗?我在此处找不到该字符:https://en.wikipedia.org/wiki/Windows-1250
我在数据库中插入字符集为WE8MSWIN1252. https://en.wikipedia.org/wiki/Windows-1252的字符时没有遇到任何问题

相关问题