Microsoft SQL Server 2014 - 12.0.4100.1 (X64)
Apr 20 2015 17:29:27
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600:) (Hypervisor)
Server排序:
SQL_Latin1_General_CP1_CI_AS
数据库(名称:检验)核对(我修改了它从SQL_Latin1_General_CP1_CI_AS到Japanese_CI_AS)
Japanese_CI_AS
测试表(假设只有一个表名为t_test的列):
name varchar(255)
我的问题:
之前,我修改了测试数据库整理(现在是SQL_Latin1_General_CP1_CI_AS),如果我执行下面的SQL:
insert into t_test(name) values('り');
结果那名保存为 '?' ,我明白这个行为。
我修改了测试数据库整理后(现在是Japanese_CI_AS),如果我执行下面的SQL:“?”
insert into t_test(name) values('り');
的结果是,名字依然保存,我不知道为什么?
有人知道吗?我必须使用varchar类型,因为这是第三方数据库,我无法修改它。如何解决它?
数据库归类必须与服务器归类一样吗?
当Server Collation是Japanese_CI_AS时,我可以插入任何日语成功。
Case 1:
1. select serverproperty('collation');
SQL_Latin1_General_CP1_CI_AS
2. use master;
3. select databasepropertyex('test_db','collation');
SQL_Latin1_General_CP1_CI_AS
4. use test_db;
5. CREATE TABLE t_test(name VARCHAR(128) COLLATE SQL_Latin1_General_CP1_CI_AS);
insert into t_test(name) values('り');
insert into t_test(name) values(N'り');
SELECT * FROM t_test;
DROP table t_test;
?
?
Case 2:
1. select serverproperty('collation');
SQL_Latin1_General_CP1_CI_AS
2. use master;
3. select databasepropertyex('test_db','collation');
SQL_Latin1_General_CP1_CI_AS
4. use test_db
4. CREATE TABLE t_test(name VARCHAR(128) COLLATE Japanese_CI_AS);
insert into t_test(name) values('り');
insert into t_test(name) values(N'り');
SELECT * FROM t_test;
DROP table t_test;
?
り
Case 3:
1. select serverproperty('collation');
SQL_Latin1_General_CP1_CI_AS
2. use master;
2. alter database test_db collate Japanese_CI_AS;
3. select databasepropertyex('test_db','collation');
SQL_Latin1_General_CP1_CI_AS
4. use test_db;
5. select databasepropertyex('test_db','collation');
Japanese_CI_AS
6. CREATE TABLE t_test(name VARCHAR(128) COLLATE Japanese_CI_AS);
insert into t_test(name) values('り');
insert into t_test(name) values(N'り');
SELECT * FROM t_test;
DROP table t_test;
り
り
以上三种情况如何工作?
您需要使用'NVARCHAR'型和插入语句一样'插入t_test(名称)的值(N 'り');'(N为宽字符字符串)。 –
我必须使用varchar – Tony
'您知道排序规则是每列的属性吗?'数据库排序规则只是新列的默认值。 (即要更改现有数据库中的排序规则,则必须更改每列的排序规则) – adrianm