-- Creating Table
Create Table Test1
(
id Varchar(8000)
)
-- Inserting a record
Insert into Test1 Values ('我們的鋁製車架採用最新的合金材料所製成,不但外型輕巧、而且品質優良。為了達到強化效果,骨架另外經過焊接和高溫處理。創新的設計絕對能充分提升踏乘舒適感和單車性能。');
因为我已将id的数据类型定义为Varchar。数据存储为?????。
我必须使用NVARCHAR ..? VarChar和Nvarchar()之间的区别是什么。请解释一下UNIcode。
答案 0 :(得分:12)
列类型nvarchar允许您存储Unicode个字符,这几乎意味着几乎任何语言中的任何字符(包括现代语言和一些过时语言),以及大量符号。
答案 1 :(得分:3)
Nvarchar支持UNICODE。是的。你需要将列作为nvarchar而不是varchar。
答案 2 :(得分:2)
是的,您必须使用nvarchar或对所需的语言集使用排序规则。但是nvarchar是首选。 Goodgle可以告诉你这些东西意味着什么。
答案 3 :(得分:0)
Varchar使用Windows-1252字符编码,这是出于所有实际目的的标准ASCII。
正如其他人所说,nvarchar允许存储unicode字符。
您可以从任一数据类型获取ASCII转换,如下所示:
IF OBJECT_ID('TEST1') IS NOT NULL
DROP TABLE TEST1
GO
CREATE TABLE TEST1(VARCHARTEST VARCHAR(8000), NVARCHARTEST NVARCHAR(4000))
-- Inserting a record
INSERT INTO TEST1 VALUES ('ABC','DEF')
SELECT
VARCHARTEST
,NVARCHARTEST
,ASCII(SUBSTRING(VARCHARTEST,1,1))
,ASCII(SUBSTRING(VARCHARTEST,2,1))
,ASCII(SUBSTRING(VARCHARTEST,3,1))
,ASCII(SUBSTRING(NVARCHARTEST,1,1))
,ASCII(SUBSTRING(NVARCHARTEST,2,1))
,ASCII(SUBSTRING(NVARCHARTEST,3,1))
FROM
TEST1
DROP TABLE TEST1
答案 4 :(得分:0)
尽管您的数据库已整理好。使用nvarchar
存储UNICODE。
在N'[value]'
INSERT INTO ... VALUES
('Azerbaijani (Cyrillic)', N'Aзәрбајҹан (кирил әлифбасы)', 'az-cyrl')
In DB: 59 Azerbaijani (Cyrillic) Aзәрбајҹан (кирил әлифбасы) az-cyrl
重要的是 N 前缀!
适用于我正在使用的MS SQL 2014。希望这会有所帮助。