首页 > 解决方案 > 在 SQL Server 中查询字段 = N'0'

问题描述

我有一些不熟悉的问题,也许大家可以解释一下,请

Select * 
From TableA 
Where field1 = N'FAIL' And field2 = N'0'

N'FAIL'N'0'=> 这是什么意思?我们可以使用该条件来获得更有效的查询吗?

这个查询和这个一样吗?

select * 
from TableA 
where field1 = 'FAIL' and field2 = '0'

希望能得到一些答案,谢谢

标签: sqlsql-serverstringwhere-clause

解决方案


N'FAIL'是字面量NVARCHAR'FAIL'是字面量VARCHAR

这是两种不同的数据类型:两者都是可变长度字符串(具有最大长度),但NVARCHAR同时存储 Unicode 和非 Unicode 字符,同时VARCHAR仅支持非 Unicode 字符。NVARCHAR如果您有 Unicode 字符(Unicode 中每个字符 2 个字节,而非 Unicode 中每个字符 1 个字节),存储大小会更大。

在您的语句中应该使用哪一个取决于与该值进行比较的列的实际数据类型。如果列是NVARCHAR,则使用NVACHAR文字,否则使用VARCHAR; 对文字字符串使用正确的数据类型总是更有效,也更安全。


推荐阅读