我使用Oracle 11g作为我的数据库。我正在更新表格如下:
UPDATE Discount_table SET discount_text='Minimum Commitment Charge - £500 - Discount' WHERE description_code=12345;
但数据库中的结果如下:
最低承诺费 - ¿500 - 折扣
我尝试为它提供nvarchar数据类型。但它的结果相同。需要做什么?
答案 0 :(得分:1)
这主要是由于特定于语言环境的NLS字符集与数据库字符集之间的不匹配。否则,在OS环境变量中未正确设置NLS_LANG
值。
按照此处所述的步骤Why are junk values/special characters/question marks displayed on my client?
检查特定于语言环境的NLS字符集:
select value from v$nls_parameters
where parameter = 'NLS_CHARACTERSET';
检查数据库字符集:
select value from nls_database_parameters
where parameter = 'NLS_CHARACTERSET';
如果您发现两者之间不匹配,则将特定于语言环境的NLS字符集设置为数据库字符集的字符集。
如果上述字符匹配,则需要在OS环境变量中设置NLS_LANG
值。
对于Windows操作系统,格式为[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]
按照有关设置NLS_LANG的文档中的说明进行操作:Setting the NLS_LANG Environment Variable for Oracle Databases
答案 1 :(得分:-1)
您可以更改您的更新语句,如
UPDATE Discount_table SET discount_text='Minimum Commitment Charge - '||chr(163)||'500 - Discount' WHERE description_code=12345;
我认为这会帮助你获得英镑符号