C# 选择类似nchar或nvarchar的位置

C# 选择类似nchar或nvarchar的位置,c#,sql,nvarchar,C#,Sql,Nvarchar,根据我的经验,在数据库中的数据上选择where like似乎不适用于nchar格式的字段,而适用于nvarchar格式的字段。这是真的吗 如果是,为什么将数据类型更改为nvarchar是唯一的解决方法 我注意到nchar是ANSIString类型,nvarchar只是字符串,但奇怪的是,当它们都是unicode时,一个工作,另一个不工作。事实证明你们都很有钱,这是一个与填充相关的问题,nchar或char在其右侧有一个空格作为填充,这意味着我必须这样做 SELECT * FROM foo WHE

根据我的经验,在数据库中的数据上选择where like似乎不适用于nchar格式的字段,而适用于nvarchar格式的字段。这是真的吗

如果是,为什么将数据类型更改为nvarchar是唯一的解决方法


我注意到nchar是ANSIString类型,nvarchar只是字符串,但奇怪的是,当它们都是unicode时,一个工作,另一个不工作。

事实证明你们都很有钱,这是一个与填充相关的问题,nchar或char在其右侧有一个空格作为填充,这意味着我必须这样做

SELECT * FROM foo WHERE bar LIKE '%bb %'
而不是这个

SELECT * FROM foo WHERE bar LIKE '%' + @field + '%'
这与后面的查询相反,查询将选择所有nvarchar等字段,但不会选择nchar或char字段

(编辑)


此解决方案将适用于我提到的两组数据类型。搜索
nchar
时,bb

后不需要空格,是否考虑字符串末尾的空格?例如,对于使用
nvarchar(6)
的单词“Hello”应该是
“Hello”
,而
nchar(6)
应该是
“Hello”
,沿着这些行,您可以尝试将“%”放在like子句中比较字符串的末尾,这也会占用无限的空间(当然还有你的比较字符串之后的其他内容)给投票结束这个的白痴,走开,回到你的地下室深处。到OP,是演员(列为varchar)那太难处理了?我从来没有试过在nchar中使用like,但很可能你没有考虑nchar字段是空格填充的,正如Scott所说的那样。@ScottChamberlain不,我没有考虑空格。我从来没有想过我显然是,我是amWell,那么你在最后考虑填充,所以这不是你的问题。为什么不请不要发布您的确切代码,我们会看看这是否有帮助。很高兴您解决了这个问题,但我有一个问题。您需要bb和%之间的空格吗?我不这么认为。好的地方我会编辑它,这样第一个解决方案将适用于所有数据类型。我需要为您的阿拉伯语问题干杯@nycdani,或者任何其他Unicode尝试N'+@param+N''请尝试或使用N“%”+@param+N“%”
SELECT * FROM foo WHERE bar LIKE '%bb%'