首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL -字符串不等于

问Oracle SQL -字符串不等于
EN

Stack Overflow用户
提问于 2011-11-07 03:37:28
回答 3查看 20.1K关注 0票数 0

我在Oracle SQL中有一个触发器。

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER test
BEFORE INSERT ON SomeTable
FOR EACH ROW
    DECLARE str1 VARCHAR(30);
            str2 VARCHAR(30);
    BEGIN
        -- some code
        IF ( str1 <> str 2 ) THEN
            DBMS_OUTPUT.PUT_LINE( ' if ' );
        ELSE
            DBMS_OUTPUT.PUT_LINE( ' else ' );
        END IF;
    END;

现在,这总是转到else语句,即使字符串肯定不相等。我尝试使用!=而不是<>来获得相同的结果。但是,反过来,如果我只使用

代码语言:javascript
复制
IF ( str1 = str2 ) THEN ... ELSE ... END If;

那么,测试两个不相等的字符串(在Oracle中)的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-07 03:55:49

你能给我们展示一下实际使用的值吗?出现上述现象的原因有可能是因为其中一个值为空?

如果str1和str2有可能有空值,那么If的值应该类似于..

代码语言:javascript
复制
IF (str1 is null and str2 is null) then
   <statments depending on whether you want to treat nulls as equal>
else if (
   (str1 is null and str2 is not null) or
   (str2 is null and str1 is not null) or
   (str1 <> str2)) then
  <statements when str1 and str2 are not equal>
else
  <statements when str1 and str2 are equal?
end if;
票数 5
EN

Stack Overflow用户

发布于 2013-11-06 12:56:06

这应该确定一个字符串是否存在于另一个字符串中:

代码语言:javascript
复制
IF instr(str1,str2)<>0 THEN
票数 0
EN

Stack Overflow用户

发布于 2013-12-31 23:21:54

有时,否定相等条件会更容易。例如,如果不相等(val1,val2);

代码语言:javascript
复制
function equals(
  val1 varchar2,
  val2 varchar2
) return boolean is
begin
  if val1 is null then
    return val2 is null;
  elsif val2 is null then
    return false;
  end if;

  return val1 = val2;
end;

在你的代码中,你会有:

代码语言:javascript
复制
BEGIN
    -- some code
    IF NOT equals(str1, str2) THEN
        DBMS_OUTPUT.PUT_LINE( ' if ' );
    ELSE
        DBMS_OUTPUT.PUT_LINE( ' else ' );
    END IF;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8029828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档