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