我在将一个问题插入到Oracle数据库时遇到了问题。
INSERT操作成功完成。 但是,当我选择SELECT时,我得到的是n而不是ñ。
另外,我注意到执行:
select 'ñ' from dual;
给我'n'。
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
给我'EE8MSWIN1250'。
如何插入ñ? 我想避免修改数据库设置。
我完成这项工作的唯一方法是:
当然,有一种更简单的方法可以实现这一目标。
答案 0 :(得分:2)
数据库字符集是否支持该字符? 我在这里找不到那个角色:https://en.wikipedia.org/wiki/Windows-1250
在我的数据库中插入字符集WE8MSWIN1252时,我没有遇到任何问题。 https://en.wikipedia.org/wiki/Windows-1252
答案 1 :(得分:2)
最简单的方法是,使用ASCII
找出角色的ASCII()
,然后插入使用CHR()
转换回字符串。
<强> SQL:强>
select ascii('ñ'),chr(50097) from dual;
<强>输出:强>
ASCII('Ñ') CHR(50097)
---------- ----------
50097 ñ
您用于连接数据库事务的客户端。有些客户,不要支持这些角色。
答案 2 :(得分:2)
在开始SQL * Plus之前,您必须相应地设置代码页(使用chcp
命令)和NLS_LANG
环境参数:
chcp 1250
set NLS_LANG=.EE8MSWIN1250
sqlplus ...
但是,正如评论中已经提到的,Windows 1250不支持字符ñ
。所以,这些价值观是行不通的。
不必将这些值设置为等于您的数据库字符集,但是代码页和NLS_LANG
必须匹配,即后续的值也应该正常工作(因为它们都支持ñ
)
chcp 1252
set NLS_LANG=.WE8MSWIN1252
sqlplus ...
或
chcp 850
set NLS_LANG=.WE8PC850
sqlplus ...
同样,EE8MSWIN1250不支持字符ñ
,除非您的列的数据类型为NVARCHAR2
(分别为NCLOB
),否则无法将ñ
存储在数据库。