在表达式上使用LIKE从表中选择加密项



我使用奇努克数据库作为一种使用加密来测试概念的方法。我发现我可以使用LIKE关键字,如果我做:

SELECT pgp_sym_decrypt("Name", '22') FROM "Artist" WHERE pgp_sym_decrypt("Name", '22') LIKE '%a%';  

如果可能的话,我目前正试图避免使用第二个pgp_sym_decrypt("Name", '22'),谢谢。

似乎您想使用列别名。但这在WHEREHAVING子句中是不可能的,它们只引用输入列,而不是输出列-由SQL标准定义。相关答案中的详细信息:
GROUP BY + CASE语句

您必须使用子查询作为包装器,这违背了您缩短代码的目标,并且如果优化器无法看穿您的噱头,可能会变慢:

SELECT *
FROM  (SELECT pgp_sym_decrypt("Name", '22') AS expr FROM "Artist") sub
WHERE  expr LIKE '%a%';

最新更新