PostgreSQL合并函数返回Null,即使值存在

PostgreSQL合并函数返回Null,即使值存在,postgresql,Postgresql,我在PostgreSQL数据库中得到了下表(节点) 我希望提取http或https信息。我正在使用COALESCE SELECT COALESCE(http,https) FROM oig.nodes WHERE owner_name = %s AND node_type = COALESCE('full','api') |---------------------|------------------|------------------|------------------| |

我在PostgreSQL数据库中得到了下表(节点) 我希望提取http或https信息。我正在使用COALESCE

SELECT COALESCE(http,https) 
FROM oig.nodes 
WHERE owner_name = %s 
  AND node_type = COALESCE('full','api')
|---------------------|------------------|------------------|------------------|
|所有者|节点|类型| http | https|
|---------------------|------------------|------------------|------------------|
|测试123 |满|http://1.1.1.1   |                  |
|---------------------|------------------|------------------|------------------|
|testabc | api |http://1.1.1.2   |
|---------------------|------------------|------------------|------------------|
|种籽|
|---------------------|------------------|------------------|------------------|

这是可行的,但只有当节点类型=full时,如果节点类型=api,它才会返回None。

COALESCE('full','api')
相当于
'full'
,因为
'full'
绝对不是空的。

COALESCE('full','api'))
相当于
'full'
,因为
'full'
绝对不是空的。

确保您有
null
s not empty''字符串可能它不是空值,而是空字符串(
'
)。请尝试
nullif(http\u node\u url,”)
I检查肯定是空值。我忘了提到可能有两个或更多同名的所有者。正如你现在看到的,“它不返回任何”有点含糊不清。我们认为您会得到一个结果行,其中的值为null。现在看来你一点也没有吵架。始终非常精确地描述发生的情况,因此我们不必猜测。请确保您有
NULL
s not empty''字符串可能它不是NULL值,而是空字符串(
'
)。请尝试
nullif(http\u node\u url,”)
I检查肯定是空值。我忘了提到可能有两个或更多同名的所有者。正如你现在看到的,“它不返回任何”有点含糊不清。我们认为您会得到一个结果行,其中的值为null。现在看来你一点也没有吵架。总是非常精确地描述发生了什么,所以我们不必猜测。如果owner=test123,yes有效,但如果owner=testabc,它将返回None。因为没有行与条件匹配。你是说
和node_键入('full','api')
?刚刚尝试了同样的问题-从oig.nodes中选择COALESCE(http_node_url,https_node_url),owner_name=%s和node_键入('full','api')<中的code>可以分解为两个表达式,用
分隔。可能是一些空白或括号问题。。。(可能是尝试将其提取到自站式查询,您的列名与ascii art表中的列名不匹配)当我尝试选择合并(http_node_url,https_node_url)时,oig.nodes中的owner\u name,其中owner\u name=%s和node\u type='full'或node\u type='api'-然后,无论我传递的是哪一个owner\u名称,它都只返回表中的第一行。如果owner=test123,则是有效的,但如果owner=testabc,则返回无。因为没有行与条件匹配。你是说
和node_键入('full','api')
?刚刚尝试了同样的问题-从oig.nodes中选择COALESCE(http_node_url,https_node_url),owner_name=%s和node_键入('full','api')<中的code>可以分解为两个表达式,用
分隔。可能是一些空白或括号问题。。。(可能是尝试将其提取到自站式查询中,您的列名与ascii art表中的列名不匹配)当我尝试从oig.nodes中选择COALESCE(http_node_url、https_node_url)、owner_name,其中owner_name=%s和node_type='full'或node_type='api'-时,无论传递的是哪一个所有者名称,它都只返回表中的第一行。