我有使用俄语文本的数据库但是当我运行查询时它会显示给我.数据库将由俄罗斯人使用,它必须正确显示俄语文本!
任何想法如何解决它?将来它将位于俄罗斯并使用俄语版SQL Server,但现在我正在使用英文版SQL 2012 Express.
这是表和insert语句:
Create table Employee
(
EmpID int not null IDENTITY (10, 1),
StrName nvarchar (25) not null,
Phone1 nvarchar (25) not null,
Phone2 nvarchar (25)
Primary Key (EmpID),
);
insert into Employee (LastName , FirstName,Phone1,Phone2)
values ('??????','111 111 11111','111 111 1111');
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 18
您确定数据是否已正确存储在数据库中?你怎么知道的?
确保列具有正确的排序规则,定义为nvarchar并且字符串文字的插入带有前缀N.例如,这些不一样:
INSERT dbo.table(column) SELECT 'foo';
INSERT dbo.table(column) SELECT N'foo';
Run Code Online (Sandbox Code Playgroud)
举个例子:
USE tempdb;
GO
CREATE TABLE dbo.foo
(
ID INT PRIMARY KEY,
bar NVARCHAR(32) COLLATE SQL_Ukrainian_CP1251_CI_AS
);
INSERT dbo.foo SELECT 1,'????????Z?????';
INSERT dbo.foo SELECT 2,N'????????Z?????';
SELECT ID, bar FROM dbo.foo;
GO
DROP TABLE dbo.foo;
Run Code Online (Sandbox Code Playgroud)
结果:
ID bar
---- --------------
1 ????????Z?????
2 ????????Z?????
Run Code Online (Sandbox Code Playgroud)
要显示这会如何影响您的insert语句,您的字符串将缺少N前缀:
SELECT
CONVERT(NVARCHAR(32), '??????'),
CONVERT(NVARCHAR(32), N'??????');
Run Code Online (Sandbox Code Playgroud)
结果:
------ ------
?????? ??????
Run Code Online (Sandbox Code Playgroud)
因此,在Unicode字符串前加上N'a prefix'或丢失数据.
| 归档时间: |
|
| 查看次数: |
9296 次 |
| 最近记录: |