gpt4 book ai didi

sql - 在网格中编辑数据与使用更新脚本

转载 作者:行者123 更新时间:2023-12-02 04:35:00 24 4
gpt4 key购买 nike

我尝试使用 Toad 12.1 DBA 和 SQLDeveloper 来实现我的目标,但我得到了相同的结果。

当我更新 grid 结果中的 NVARCHAR2 单元格时,我可以设置并提交“€”符号作为值。但是当我执行更新脚本来做同样的事情时,它会打印“?”字符作为数据。

这是我在网格中编辑和提交数据时的结果:

enter image description here

这是我使用更新脚本做同样事情时的问题:

enter image description here

我尝试使用不同的 NLS_LANG 参数,但它们也不起作用。美国_美国.WE8ISO8859P9AMERICAN_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;

解决方案:在我的 NVARCHAR 字段的 JPA 实体上使用 @Nationalized 注释解决了我的问题。

最佳答案

默认数据类型 Text Literal是字符。 CHAR 字符串只能包含 ASCII 符号,ASCII 表中没有 '€' 符号,所以 '€' 被转换为 '?'在语句编译期间。

要使用国家字符集,字符串值必须以N 为前缀。 N函数将编译时的数据转换为NCHAR。

UPDATE AAA SET NVARCHAR2COL = N'€'; 应该有效。

或者可以使用 UPDATE AAA SET NVARCHAR2COL = to_nchar('€');

当更新网格中的值时,开发工具会为用户透明地执行相同的操作。

关于sql - 在网格中编辑数据与使用更新脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44429528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com