【问题标题】:How to insert greek characters into sqlserver table如何将希腊字符插入sql server表
【发布时间】:2015-09-21 13:13:52
【问题描述】:

我有一个简单的插入,但带有希腊字符

INSERT INTO tmp (fname) VALUES ('ΚΩΝΣΤΑΝΤΙΝΟΣ')

我尝试了两种方式来创建表格:

create table tmp (fname varchar(40))

和

create table tmp (fname nvarchar(40))

当我然后选择数据时:

select * from tmp

我明白了:

?O?S???????S

我正在使用:

Microsoft SQL Server 2005 - 9.00.4060.00 (Intel X86) 
    Mar 17 2011 13:20:38 
    Copyright (c) 1988-2005 Microsoft Corporation
    Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

和

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
    Oct 19 2012 13:38:57 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

两者都是一样的。

我正在使用:

Microsoft SQL Server Management Studio  11.0.2100.60

创建表和插入数据等

如何让希腊字符正确存储,或者当我选择它们时它们是否正确存储以正确显示?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    尝试使用前缀Unicode字符串:

    create table tmp (fname nvarchar(40))
    INSERT INTO tmp (fname) VALUES (N'ΚΩΝΣΤΑΝΤΙΝΟΣ')
    

    还有可能是列的排序有问题,请设置

    create table tmp (fname nvarchar(40) COLLATE SQL_Latin1_General_CP1253_CI_AI)
    

    来自MSDN:

    在 Unicode 字符串常量前加上字母 N。不带 N前缀,字符串被转换为默认的代码页 数据库。此默认代码页可能无法识别某些字符。

    【讨论】:

    • 注意 SQL 排序规则:主要是为了向后兼容。见docs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多