【发布时间】:2011-11-09 07:20:48
【问题描述】:
我有以下 Oracle PL/SQL 代码,从你们的角度来看,它们可能会生锈:
DECLARE
str1 varchar2(4000);
str2 varchar2(4000);
BEGIN
str1:='';
str2:='sdd';
IF(str1<>str2) THEN
dbms_output.put_line('The two strings is not equal');
END IF;
END;
/
这很明显两个字符串str1和str2不相等,但是为什么'The two strings are not equal'没有打印出来呢? Oracle 是否有另一种比较两个字符串的常用方法?
【问题讨论】:
-
请记住,在 Oracle 中,空字符串等价于
NULL,在不等式比较语句中可能无法正常工作 -
你能给我一些关于如何解决这个问题的建议吗?
-
这是两个截然不同的问题。你应该这样问他们,因为这就是 SO 的工作方式。话虽如此,您的第二个问题是一个已经回答过几次的老栗子。提问前请先搜索:stackoverflow.com/questions/tagged/oracle+string-aggregation
-
@APC,除了这个问题不是问为什么空字符串为空,而是为什么
'' <> 'something'不是真的。它只与那个问题有关,因为这个问题的答案,因为 Oracle 将空字符串视为 null 可能会导致人们问这个问题,为什么?
标签: sql oracle plsql oracle10g oracle11g