我使用Chinook Database作为使用加密测试概念的方法。我发现如果我这样做,我可以使用LIKE
关键字:
SELECT pgp_sym_decrypt("Name", '22') FROM "Artist" WHERE pgp_sym_decrypt("Name", '22') LIKE '%a%';
我正在努力避免使用第二个pgp_sym_decrypt("Name", '22')
,如果可能的话,谢谢。
答案 0 :(得分:1)
好像你想使用列别名。但是在WHERE
或HAVING
子句中不可能,它只引用SQL标准定义的输入列而不是输出列。这个相关答案的细节:
GROUP BY + CASE statement
你必须使用子查询作为包装器,这种方式违背了你缩短代码的目的,如果优化器无法看清你的特技,可能会更慢:
SELECT *
FROM (SELECT pgp_sym_decrypt("Name", '22') AS expr FROM "Artist") sub
WHERE expr LIKE '%a%';