遇到一个Oracle字符串不等于号的问题

Oracle William 2671浏览 0评论

我的问题是这样的:

ERR_TEXT := '';
……
ERR_TEXT := '有错误'
……
IF ERR_TEXT <> '' THEN
  UPDATE table T SET T.ERR_TEXT = ERR_TEXT  WHERE T.id = id;
END IF;

上面的SQL代码中,ERR_TEXT已经赋值为’有错误’了,但使用ERR_TEXT <> ”却不起作用,看来不等于号<>将空字符串当做null来处理了,导致这个判断永远为false,我的代码没法执行。

这是相当奇怪的一个问题,我搜索了一下,发现有类似的例子:Oracle中的不等于号

解决方法

IF NVL(ERR_TEXT,'xx')<>'xx' THEN
  UPDATE table T SET T.ERR_TEXT = ERR_TEXT  WHERE T.id = id;
END IF;

或者

IF CONCAT(ERR_TEXT,'XX')<>'XX' THEN
  UPDATE table T SET T.ERR_TEXT = ERR_TEXT  WHERE T.id = id;
END IF;

转载请注明:AspxHtml学习分享网 » 遇到一个Oracle字符串不等于号的问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址