Unicode 插入中文字母的SQL命令
我有一个数据库,其中一列的类型是nvarchar。如果我写Unicode 插入中文字母的SQL命令,unicode,oracle-sqldeveloper,nvarchar,Unicode,Oracle Sqldeveloper,Nvarchar,我有一个数据库,其中一列的类型是nvarchar。如果我写 INSERT INTO table VALUES ("玄真") 它在表中显示?。我该怎么办 我使用的是SQL Developer。首先,您应该在数据库中建立汉字编码 UTF-8, Chinese_Hong_Kong_Stroke_90_BIN, Chinese_PRC_90_BIN, Chinese_Simplified_Pinyin_100_BIN ... 我向您展示了一个SQL Server 2008(Management
INSERT INTO table VALUES ("玄真")
它在表中显示?
。我该怎么办
我使用的是SQL Developer。首先,您应该在数据库中建立汉字编码
UTF-8, Chinese_Hong_Kong_Stroke_90_BIN, Chinese_PRC_90_BIN, Chinese_Simplified_Pinyin_100_BIN ...
我向您展示了一个SQL Server 2008(Management Studio)的示例,其中包含了所有这些排序规则,但是,您可以在其他数据库(MySQL、SQLite、MongoDB、MariaDB…)中找到相同的字符编码
中文\u PRC\u 90\u BIN创建数据库
,但您可以选择其他关联:
选择页面(左页眉)选项>排序规则>选择排序规则使用单引号而不是双引号来创建文本文字,对于
nvarhar2
/NCHAR
文本文字,您需要在其前面加上N
Oracle 11g R2架构设置:
CREATE TABLE table_name ( value NVARCHAR2(20) );
INSERT INTO table_name VALUES (N'玄真');
SELECT * FROM table_name
| VALUE |
|-------|
| 玄真 |
查询1:
CREATE TABLE table_name ( value NVARCHAR2(20) );
INSERT INTO table_name VALUES (N'玄真');
SELECT * FROM table_name
| VALUE |
|-------|
| 玄真 |
:
CREATE TABLE table_name ( value NVARCHAR2(20) );
INSERT INTO table_name VALUES (N'玄真');
SELECT * FROM table_name
| VALUE |
|-------|
| 玄真 |
首先,使用NVARCHAR甚至可能没有必要 “N”字符数据类型用于存储不“适合”数据库定义的字符集的数据。有一个辅助字符集定义为NCHAR字符集。它有点像创可贴——一旦创建数据库,就很难更改其字符集。这个故事的寓意是——在定义字符时要格外小心在创建数据库时设置,不要只接受默认值 在这里,我们将在NVARCHAR和VARCHAR2中存储一个中文字符串
CREATE TABLE SO_CHINESE ( value1 NVARCHAR2(20), value2 varchar2(20 char));
INSERT INTO SO_CHINESE VALUES (N'玄真', '我很高興谷歌翻譯。' )
select * from SO_CHINESE;
请注意,这两个字符集都在Unicode系列中。请注意,我还告诉我的VARCHAR2字符串可以容纳20个字符。这是因为某些字符可能需要最多4个字节才能存储。使用(20)的定义只能存储其中5个字符
让我们看看使用SQLDeveloper和我的本地数据库的相同场景
以及确认字符集:
SQL> clear screen
SQL> set echo on
SQL> set sqlformat ansiconsole
SQL> select *
2 from database_properties
3 where PROPERTY_NAME in
4 ('NLS_CHARACTERSET',
5 'NLS_NCHAR_CHARACTERSET');
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
NLS_NCHAR_CHARACTERSET AL16UTF16 NCHAR Character set
NLS_CHARACTERSET AL32UTF8 Character set
Justin使用的是Oracle,不是SQL Server,我知道,但这是同一个过程…@a_horse_和a_no_nameNo,在Oracle中更改编码的过程是完全不同的(事实上,一旦创建了数据库实例,您甚至无法更改编码)。甚至“创建数据库”在Oracle中表示完全不同的内容。您的答案中没有任何内容适用于Oracle当然,您不能在创建数据库时更改数据库的字符编码,但是,我不同意,因为我与SQL Developer(Oracle)合作过是的,在创建字符编码之前,您可以完全更改字符编码,这显然与SQL Server使用不同接口的方式相同。比方说,我必须使用相同的数据库。@SQLDev中的字体首选项控制数据显示的网格和代码编辑器……因此,如果它在中的INSERT语句中看起来正确的话工作表,对网格有好处