将字段与值进行比较并返回bool

Arm*_*ots 7 sql postgresql npgsql

我正在尝试将哈希从服务器应用程序移动到PostgreSQL.换句话说,我需要调用PGSQL的查询,它将查询中的字符串与字段中的字符串进行比较,并将相等比较的结果返回为bool,但我不知道如何在没有清除SQL的过程的情况下执行此操作.

upd:我有表用户的字段密码(目前是文本,将来 - bytea).我想写一些像

select * from values ('WrittenPassword' = users.password) where username = 'someuser' ,
Run Code Online (Sandbox Code Playgroud)

必须返回true或false作为平等比较的结果.

Zan*_*ien 23

您可以使用CASE语句根据条件返回某些值:

SELECT 
    (CASE WHEN password = 'WrittenPassword' THEN 1 ELSE 0 END) AS is_equal
FROM
    users
WHERE
    username = 'someuser'
Run Code Online (Sandbox Code Playgroud)

  • 该死的,一个正常人,有正常答案。谢谢朋友 (2认同)
  • 当用户名不存在时查询返回什么,好吗?没有什么可比较的,好吗?请查一下“三值逻辑”好吗? (2认同)
  • @wildplasser,如果用户名不存在,它不会返回任何行,因为 WHERE 子句会过滤掉它。否则,如果用户确实存在,则密码只能等于或不等于输入字符串,因此您必须获得 0 或 1。 (2认同)
  • 我知道(我想你也知道),但结果取决于调用者如何处理三值逻辑(NULL :=“没有返回行”) OP 不理解这一点,并且正在诉诸于花花公子的演讲。当存在三值逻辑时,我们将不得不制定更精确的公式。 (2认同)