【发布时间】:2015-05-16 17:28:04
【问题描述】:
我在 SQL Server 中将列定义为 nvarchar,因此(我认为)'Weiss'=='Weiß'。但在我的 c# 代码中,'Weiss'!='Weiß'
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tags]
(
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Value] [nvarchar](125) NOT NULL,
[IsBlocked] [bit] NOT NULL,
[Created] [datetimeoffset](7) NOT NULL,
[Updated] [datetimeoffset](7) NOT NULL,
CONSTRAINT [PK_dbo.Tags]
PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
在 SQL Server 中:
SELECT *
FROM [Tags]
WHERE Value = 'Weiss Kreuz'
返回值为 'Weiß Kreuz' 的行
有人能解释一下这是怎么发生的,以及如何在 c# 和 SQL Server 中进行相同的比较吗?
【问题讨论】:
-
你试过不区分大小写的等号吗?
-
在 sql 或 c# 中?不,不知何故 sql 'ss' 等于 'ß'
-
在 C# 中。 SQL 通常配置为进行不区分大小写的字符串比较,而 C# 通常配置区分大小写的比较。
标签: c# sql-server unicode