select * from zzz t1
INNER JOIN yyy T2
on (T1.col1 = T2.col1 )
and (T1.col2 = T2.col2 or (T1.col2 is null and T2.col2 is null ) )
VS
select * from zzz t1
INNER JOIN yyy T2
on (T1.col1 = T2.col1 )
and (coalesce(T1.col2, '\0') = coalesce(T2.col2, '\0'))
或者,如果有第三种,更好的方法,我也会这样做。这是我发现自己经常做的事情,因为我们的一半数据库允许空值,而其中一半数据库没有这么比较。
唯一的问题是我需要避免不标准的事情,我使用了太多不同的dbs而且我努力摆脱所有这些并不支持的事情除非表现获得完全神奇。 (db2,oracle,sqlserver是我正在使用的主要部分)
答案 0 :(得分:1)
如果数据库进行<?php
//You have below array including all keys
$result_array = array('logo'=>'test','state_id'=>125,'prelim_info'=>'','CLIxModule_Impl'=>'5','district_entry'=>3);
// Now provide only those keys which you need to filter.
$filter_keys = array('district_entry','state_id');
$filtered_array = array_filter($result_array,
function ($key) use ($filter_keys) {
return in_array($key, $filter_keys);
},
ARRAY_FILTER_USE_KEY
);
var_dump($filtered_array);
?>
安全比较,那么最好的方法是:
NULL
(这由DB2支持,但不支持Oracle或SQL Server。)
否则,我认为你的两个版本至少在大多数数据库中都是等价的。函数/ select *
from zzz t1 join
yyy T2
on (T1.col1 = T2.col1 ) and
(T1.col2 is not distinct from T2.col2);
的使用限制了使用or
索引的能力。