Sql server SQL中的中欧字符

Sql server SQL中的中欧字符,sql-server,collation,Sql Server,Collation,我有个问题。我在SQL server上存储了带有中欧字符的数据,如“č”、“ř”、“ž”等。在数据库上,我有“捷克语CI__AS”排序规则,应该可以接受这些字符。但当我尝试选择例如街道名称时,使用如下字符: SELECT * FROM Street where Name = 'Čáslavská' 它什么也没给我 当我删除“č”时,它会返回我需要的内容 SELECT * FROM Street where Name like '%áslavská' 我在nvarchar类型中有此列。但是我不

我有个问题。我在SQL server上存储了带有中欧字符的数据,如
“č”、“ř”、“ž”
等。在数据库上,我有“捷克语CI__AS”排序规则,应该可以接受这些字符。但当我尝试选择例如街道名称时,使用如下字符:

SELECT *
FROM Street where Name = 'Čáslavská'
它什么也没给我 当我删除“č”时,它会返回我需要的内容

SELECT *
FROM Street where Name like '%áslavská'
我在
nvarchar
类型中有此列。但是我不能在字符串之前使用N字符,因为外部应用程序使用该表进行读取,并且自动进行选择

有什么解决办法吗?还是我做错了什么


谢谢你的帮助

@YuriyTsarkov在这里真的值得表扬。详细说明他的回答

发件人:

以字母N作为Unicode字符串常量的前缀。如果不使用N前缀,字符串将转换为数据库的默认代码页。此默认代码页可能无法识别某些字符

示例

-- Storing Čáslavská in two vars, with and without N prefix.
DECLARE @Test_001 NVARCHAR(255)  =  'Čáslavská' COLLATE Czech_CI_AS;
DECLARE @Test_002 NVARCHAR(255)  = N'Čáslavská' COLLATE Czech_CI_AS;

-- Test output.
SELECT 
    @Test_001   AS T1,
    @Test_002   AS T2
;
返回

T1         T2
Cáslavská  Čáslavská

@尤里亚特萨尔科夫在这里真的值得表扬。详细说明他的回答

发件人:

以字母N作为Unicode字符串常量的前缀。如果不使用N前缀,字符串将转换为数据库的默认代码页。此默认代码页可能无法识别某些字符

示例

-- Storing Čáslavská in two vars, with and without N prefix.
DECLARE @Test_001 NVARCHAR(255)  =  'Čáslavská' COLLATE Czech_CI_AS;
DECLARE @Test_002 NVARCHAR(255)  = N'Čáslavská' COLLATE Czech_CI_AS;

-- Test output.
SELECT 
    @Test_001   AS T1,
    @Test_002   AS T2
;
返回

T1         T2
Cáslavská  Čáslavská

您需要更新所有外部应用程序代码以使用带N的selects,或者,您需要将列的排序规则更改为与外部应用程序使用的相同。这可能会导致一些数据丢失。

您需要更新所有外部应用程序代码,以使用带N的selects,或者,您需要将列的排序规则更改为与外部应用程序使用的相同。这可能会导致一些数据丢失。

在数据库的属性和列的属性中,您是否看到与
Name
相同的排序规则?说到正确的SQL方法,您必须在字符串之前使用N char。如果你不。。如果我是你,我会想办法把特定字符替换成标准英语alphabet@soldous我用一个新表做了一个快速测试,该表包含一个nvarchar列,排序规则为Czech_CI_,但无法重现您的问题;您的查询似乎运行良好,即使是大写的
Č
与小写的
č
。您能否提供一个?您是否在数据库的属性和列的属性中看到与相同的排序规则
捷克语CI_\u作为
?说到正确的SQL方法,您必须在字符串之前使用N char。如果你不。。如果我是你,我会想办法把特定字符替换成标准英语alphabet@soldous我用一个新表做了一个快速测试,该表包含一个nvarchar列,排序规则为Czech_CI_,但无法重现您的问题;您的查询似乎运行良好,即使是大写的
Č
与小写的
č
。你能提供一份报告吗?