从SSM和BSQLDB运行时,SQL脚本将返回不同的值



我正在尝试使用SSMS(在Windows OS上(和BSQLDB(在RHL Linux上(对SQL 2012服务器运行相同的脚本。这两个客户的输出都是不同的。

该脚本涉及与零值的串联。这是脚本的简化版本

--File: Test.SQL
declare @FirstValue varchar(50)
declare @SecondValue varchar(50)
set @FirstValue = null
set @SecondValue = 'TEST'
select @FirstValue + ' - Hello - ' + @SecondValue as Result

,输出如下 - SSM

Result
-------------------------
NULL
(1 row(s) affected)

bsqldb:

 - Hello - TEST

我如何为这两个客户获得一致的结果。

串联的默认SQL行为是当任何值中的任何一个值为null时,整个串联导致null。但是,这在从Linux(BSQLDB(发射的查询中没有观察到。

我们必须在SQL上设置SET CONCAT_NULL_YIELDS_NULL ON连接参数以具有所有客户端的一致输出。

注意:您也可以使用SSM从UI设置相同的参数,

右键单击"对象资源管理器">"属性"上的服务器>选择连接>设置"默认连接选项"

希望这有助于任何面临类似问题的人。

谢谢。

在sql-server中,与null连接的任何值是null

您可以在sql-server中使用的是使用isnull函数

declare @FirstValue varchar(50)
declare @SecondValue varchar(50)
set @FirstValue = null
set @SecondValue = 'TEST'
select isnull(@FirstValue,'') + ' - Hello - ' + isnull(@SecondValue,'') as Result

相关内容

  • 没有找到相关文章

最新更新