我尝试使用Toad 12.1 DBA和SQLDeveloper来实现我的目标,但我得到了相同的结果。
当我在网格结果中更新NVARCHAR2单元格时,我可以设置并提交“€”符号作为值。但是当我执行更新脚本来执行相同的操作时,它会打印'?'字符作为数据。
以下是我在网格中编辑和提交数据时的结果:
当我使用更新脚本执行相同操作时,问题出现了:
我尝试使用不同的NLS_LANG参数但它们也不起作用。 AMERICAN_AMERICA.WE8ISO8859P9 AMERICAN_AMERICA.AL16UTF16
数据库NLS参数在这里:
SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
PARAMETER VALUE
------------ ------------
NLS_CHARACTERSET WE8ISO8859P9
NLS_NCHAR_CHARACTERSET AL16UTF16
为简单表创建脚本:
CREATE TABLE AAA
(
NVARCHAR2COL NVARCHAR2(50)
);
我也尝试使用sqlplus来执行更新脚本,但它也将问号打印为数据。
编辑:还有一件事,使用带有unistr函数的更新脚本,但我需要使用可读文本更新数据:
UPDATE AAA SET NVARCHAR2COL = unistr('\20AC');
COMMIT;
解决方案:在我的JPA实体上使用@Nationalized注释获取NVARCHAR字段解决了我的问题。
答案 0 :(得分:0)
Text Literal的默认数据类型是CHAR。 CHAR字符串只能包含ASCII符号,并且ASCII表中没有axios.all([
axios.get('https://jira.example.co.uk/rest/api/2/search?jql=project = 10005 AND fixVersion = versionID ORDER BY priority DESC, key ASC', headers),
axios.get('https://jira.example.co.uk/rest/api/2/search?jql=status IN (Reported) AND project = 10005 AND fixVersion = versionID ORDER BY priority DESC, key ASC', headers),
axios.get('https://jira.example.co.uk/rest/api/2/search?jql=status IN (Confirmed) AND project = 10005 AND fixVersion = versionID ORDER BY priority DESC, key ASC', headers))
])
.then(axios.spread(function (response1, response2, response3) { ... }
符号,因此在语句编译期间'€'
将转换为'€'
。
要使用国家字符集字符串值,必须以'?'
为前缀。 N
函数将编译时的数据转换为NCHAR。
N
应该有用。
可以使用UPDATE AAA SET NVARCHAR2COL = N'€';
。
更新网格中的值时,开发工具会为用户透明地执行相同操作。