Visual Studio 2013 SSDT - 编辑数据 - IS NULL 不能用作过滤器

Visual Studio 2013 SSDT - Edit data - IS NULL not work as filter

我正在尝试使用 ssdt 过滤 table 的某行(左键单击 table,查看数据,排序和过滤)

这里我只需要将 IS NULL 作为条件添加到 nvarchar 字段。
但是一旦我应用过滤器,我就会收到错误消息:

Incorrect syntax near the keyword SET

查看编辑器编写的查询,我看到条件是 fldName =,没有迹象显示我的 NULL 检查

我该怎么做?

这是结果:

SELECT TOP 1000 [Ktyi_TS002_IdTipoDocumento] ,
[nvc_TS002_TipoDocumento] ,[nvc_TS002_IdFunzioneControllo] ,[bit_TS002_Annullato] 
FROM [dbo].[TS002_TipoDocumento] 
WHERE [nvc_TS002_IdFunzioneControllo] =

这是在 google 中找到的数据编辑器的一些图像,用于向不了解 ssdt 的人展示我正在谈论的内容:

过滤器不支持 IS (NOT) NULL 表达式似乎是一个错误。

您可以通过为 table 创建一个新的 SQL 查询并手动输入“IS NULL”的过滤器来解决这个问题。

1- 右键单击​​ table
2- 单击 "New Query"
3- 使用 IS NULL 作为过滤器键入 SQL 语句

这应该没问题。

这是一个非常丑陋的 hack,但它可能对你有用。

您似乎需要在 = 号左侧添加一个列名,以防止过滤器解析器更改查询。在我的例子中,我在其中查找空值的列是一个整数,因此我需要在左侧获取一个整数。

我还需要为我正在寻找空值的列提供一个值,该值对于任何非空行都不存在。在我的例子中,这是 0。

Create MyTable 
(  Id    int primary key,
     ...
   MyNum  int
);

要搜索 MyNum 列中包含空值的行,我这样做了:

[Id] - [Id] = IsNull([MyNum],0)

[Id] - [Id] 用于生成 0 并且不会触发解析器将语句重写为 [MyNum] = stuff

右侧未被解析器重写,因此 NULL 值更改为 0。

我假设对于字符串你可以做类似的事情,也许

concatenate([OtherStringCol],'XYZZY') = ISNull([MyStrCol],concatenate([OtherStringCol],'XYZZY'))

'XYZZY' 部分用于确保您不会遇到 [MyStrCol] = [OtherStringCol] 的情况。我假设这些列中不存在字符串 'XYZZY'。