根据我的经验,选择从数据库中获取数据的位置似乎不适用于nchar格式的字段,但适用于nvarchar格式。这是真的?

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

我注意到nchar是ANSIString类型,而nvarchar只是String,但是当它们都是unicode时,一个可行而另一个却不可行,这似乎很奇怪。

最佳答案

事实证明,您几乎全都在赚钱,这是一个与填充相关的问题,nchar或char在其右边有一个空格作为填充,这意味着我必须做类似的事情

SELECT * FROM foo WHERE bar LIKE '%bb %'


代替这个

SELECT * FROM foo WHERE bar LIKE '%' + @field + '%'


这与后面的查询相反,这将选择所有nvarchar等字段,但不会选择nchar或char。

(编辑)

SELECT * FROM foo WHERE bar LIKE '%bb%'


该解决方案将适用于我提到的两组数据类型。 bb之后不需要空间

09-25 22:25