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'。
我正在尝试使用 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'。