Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String db2空字符串相等比较_String_Db2_Compare_Db2 Luw - Fatal编程技术网

String db2空字符串相等比较

String db2空字符串相等比较,string,db2,compare,db2-luw,String,Db2,Compare,Db2 Luw,我想对空字符串(“”=“”)进行相等的比较 在查询下无法工作。 我认为“=”不起作用 SELECT RESOURCE_ID FROM DEV_RESOURCE WHERE PHYSICAL_NAME = 'g' AND CASE WHEN '' = '' THEN '1' ELSE RESOURCE_DIV END = CASE WHEN '' = '' THEN '1' ELSE '' END -- AND DECODE('',

我想对空字符串(“”=“”)进行相等的比较

在查询下无法工作。 我认为“=”不起作用

SELECT RESOURCE_ID  
FROM DEV_RESOURCE
WHERE PHYSICAL_NAME = 'g'                   
    AND 
    CASE WHEN '' = '' THEN '1' ELSE RESOURCE_DIV END = CASE WHEN '' = '' THEN  '1' ELSE '' END
 -- AND DECODE('', '','1', RESOURCE_DIV) = DECODE('','','1','')
WITH UR;
像注释一样,使用解码功能更改查询似乎很棒,但我不想这样做。

原因是 “Oracle兼容性”

在创建数据库之前,我修改了允许Oracle兼容的注册表变量。(db2set DB2_兼容性_VECTOR=ORA)

与DB2不同,Oracle将null视为空字符串(“”)。
因此,oracle兼容性会使“”=''产生错误。

''为空不确定我是否理解
''=''
的原因。这不是一直都是真的吗…?你偶尔启用了Oracle兼容性吗?@mustaccio是的,我启用了!那么,由于Oracle将空字符串视为空值,DB2(仅在Oracle兼容模式下)必须模拟这种行为,
''''''='
变得等同于
null=null
,根据定义,这永远都不是真的。