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
,根据定义,这永远都不是真的。