标签 SQL适配 下的文章

适配过程中发现:如果某个 SQL 的查询条件是 some_col != '',那么返回的结果就会是空

于是做了如下简单实验:
SQL

select
    case
        when ('1' != '') then '1'
        when ('1' = '') then '2'
        else 'else'
    end as result_1,
    ('1' = '')::bool as result_2,
    ('1' != '')::bool as result_3,
    ('1' != '' or '1' = '') as always_true_1,
    ('1' != '1' or '1' = '1') as always_true_2

result:

{
  "postgres": {
    "result_1": "2",
    "result_2": false,
    "result_3": true,
    "always_true_1": true,
    "always_true_2": true
  },
  "gaussdb": {
    "result_1": "else",
    "result_2": null,
    "result_3": null,
    "always_true_1": null,
    "always_true_2": true
  }
}

完全不明白为什么 gaussdb 的逻辑是这样的,如果有人知道可以告诉我一下吗?