none
一个Replace简单语句引起的问题,请大侠赐教,谢谢! RRS feed

  • 问题

  • SET @dySql=REPLACE(@dySql,'@kpi',@ColNamesKPI),@dySql不包含‘@kpi’,这条语句执行在有的数据库上之后@dySql没变成null,有的数据库上之后@dySql变成了null,数据库版本都是SQLSERVER 2008+sp4,请问结果为什么有差异,是数据库哪里的设置不同造成结果不同吗?
    2017年11月28日 6:02

答案

  • 哦,本来replace就是任意一个参数为null返回null的。至于没返回null的,你检查一下set ansixxx 的设置。


    想不想时已是想,不如不想都不想。

    • 已标记为答案 Tim-2009 2017年11月28日 7:09
    2017年11月28日 6:29
    版主

全部回复

  • 你确定 @dySql 和 @ColNamesKPI replace之前不为null?

    想不想时已是想,不如不想都不想。

    2017年11月28日 6:08
    版主
  • 你确定 @dySql 和 @ColNamesKPI replace之前不为null?

    想不想时已是想,不如不想都不想。

    @dySql 和 @ColNamesKPI replace之前,前者不为null,后者为null

    • 已编辑 Tim-2009 2017年11月28日 6:14 改错
    2017年11月28日 6:13
  • 哦,本来replace就是任意一个参数为null返回null的。至于没返回null的,你检查一下set ansixxx 的设置。


    想不想时已是想,不如不想都不想。

    • 已标记为答案 Tim-2009 2017年11月28日 7:09
    2017年11月28日 6:29
    版主
  • 哦,本来replace就是任意一个参数为null返回null的。至于没返回null的,你检查一下set ansixxx 的设置。


    想不想时已是想,不如不想都不想。

    是这里的设置吧,看到两个数据库一样啊

    2017年11月28日 6:38
  • 哦,本来replace就是任意一个参数为null返回null的。至于没返回null的,你检查一下set ansixxx 的设置。


    想不想时已是想,不如不想都不想。


    找到了原因,两个数据库的配置一样,数据不一样,导致了结果不一样。还是对Replace函数不了解,我以为找不到被替换的字符的话,就不会替换,而不管用替换的字符是否为NULL
    2017年11月28日 7:09
  • 我说,你看一眼文档也不麻烦吧,又不是新人,不至于找不到微软的文档在哪里吧

    想不想时已是想,不如不想都不想。

    2017年11月30日 8:59
    版主