- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想调用这个发送一个值的过程,该值可以是 NULL 或任何 int 值。
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId =@SubDomainId
我只是想使用这个单一的查询,而不是我现在在下面给定的代码中正在做的事情。
我搜索了这个我怎么能这样做然后我得到了this Link .
根据这个,我必须将 ANSI_NULLS 设置为 OFF
我无法在执行我的 sql 查询之前在此过程中设置它,然后在执行此操作后再次重置它。
ALTER PROCEDURE [Tags].[spOnlineTest_SubDomainSelect]
@SubDomainId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @SubDomainId IS NULL
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId IS NULL
ELSE
SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDomainId =@SubDomainId
END
处理 ANSI_NULLS 或使用 If Else 的更好做法是什么
最佳答案
SET ANSI_NULLS 仅在存储过程创建时定义,不能在运行时设置。
Using SET Options
The Database Engine saves the settings of both SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a Transact-SQL stored procedure is created or modified. These original settings are used when the stored procedure is executed. Therefore, any client session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS are ignored when the stored procedure is running. Other SET options, such as SET ARITHABORT, SET ANSI_WARNINGS, or SET ANSI_PADDINGS are not saved when a stored procedure is created or modified. If the logic of the stored procedure depends on a particular setting, include a SET statement at the start of the procedure to guarantee the appropriate setting. When a SET statement is executed from a stored procedure, the setting remains in effect only until the stored procedure has finished running. The setting is then restored to the value the stored procedure had when it was called. This enables individual clients to set the options they want without affecting the logic of the stored procedure.
在这种情况下,使用 IF ELSE 因为 SET ANSI_NULLS将来会ON。
或者 Peter Lang 的建议。
老实说,期望 SubDomainId = @SubDomainId
在 @SubDomainId 为 NULL 时工作并不是 NULL 的正确用法...
关于sql - 如何处理 SET ANSI_NULLS ON 或 OFF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482603/
我想将 MySQL 数据库连接到 Assure Id 2009 软件。当我导入 SQL 文件时,出现如下错误: 未知的系统变量“ANSI_NULLS” 我的 SQL 是这样的: SET ANSI_NU
我想检查@a是否与“ ansi_nulls off”中的@b不同: set ansi_nulls off declare @a int = 1; declare @b int = null; sele
我写了一个触发器。 USE [TEST] GO /****** Object: Trigger [dbo].[TR_POSTGRESQL_UPDATE_YC] Script Date: 05/
在我们的数据库中有一个使用 ANSI_NULLS OFF 创建的表。 .现在我们已经使用这个表创建了一个 View 。我们想为这个 View 添加一个聚集索引。 在创建聚集索引时,它显示了一个错误,例
在运行一些查询之前,我必须设置 ANSI_NULLS 和其他一些数据库选项。所以在我的代码中 const string query_prefix = "SET ANSI_NULLS ON \n GO
我有一个问题,我们总是说 null =null 是假的,我想知道当 ansi_nulls 关闭时,这个声明“null=null”也是假的?谢谢 最佳答案 当 ANSI_NULLS OFF 时,NULL
SET ANSI_NULLS ON; -- Query1 SELECT 'StackOverFlow' AS Statement11 WHERE 'Name' IN ('S','Q', 'L', 'N
我今天正在处理 10 多年前编写的旧 Delphi 应用程序。部分应用程序包含将在应用程序中构建更新语句然后将它们发送到 SQL Server 以运行的组件。 我需要做的工作是尝试加快一些查询的速度。
我们在 ANSI_NULLS 设置和计算列方面存在一些问题,并且我们有大量的存储过程 SET ANSI_NULLS OFF 我们想将它们全部更改为 SET ANSI_NULLS ON 有没有一种简单的
SET ANSI_NULLS OFF 的作用是什么? 最佳答案 From MSDN: The SQL-92 standard requires that an equals (=) or not eq
我会认为 SET ANSI_NULLS OFF 模式非常方便,如果它始终如一地工作,我会默认使用它 - 允许在任何地方使用 = 或 != 来比较空值。但只有当我与显式内联 null 进行比较时它才有效
我想调用这个发送一个值的过程,该值可以是 NULL 或任何 int 值。 SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDoma
SET ANSI_NULLS OFF 似乎在 TSQL 中给出不同的结果,具体取决于您是比较表中的字段还是值。谁能帮助我理解为什么我的最后两个查询没有结果?我不是在寻找解决方案,只是在寻找解释。 se
定义说: When SET ANSI_NULLS is ON, a SELECT statement that uses WHERE column_name = NULL returns zero r
注意:我检查了 Understanding QUOTED_IDENTIFIER它没有回答我的问题。 我让我的 DBA 运行我在 Prod 服务器上创建的索引(他们查看并批准了它)。 它像我想要的那样加
所以我一直在创建脚本的时候盲目地使用ansi_nulls on,quoted_identifier on,因为sqlserver在脚本化对象的时候会自动生成它们.. 我真的没有时间关心这些琐碎的废话
documentation指出数据库 ANSI_NULLS 标志控制在某些方面与 null 进行比较的行为。 我在查 this stack overflow post检查如何确定(未设置)此标志的值。
我可以更改 SET ANSI_NULLS 的值通过使用 SET ANSI_NULLS OFF或 SET ANSI_NULLS ON 问题 #1 如何获得当前值? 问题 #2 设置值是否应用于查询? t
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在搜索 ansi_nulls 时,我偶然发现了这篇文章,其中说 MySQL 没有实现 ansi_nulls,并且 MsSql 计划删除它:something about ansi_nulls 微软在2
我是一名优秀的程序员,十分优秀!