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

时间:2014-05-22 18:51:34

标签: sql database postgresql encryption

我使用Chinook Database作为使用加密测试概念的方法。我发现如果我这样做,我可以使用LIKE关键字:

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

我正在努力避免使用第二个pgp_sym_decrypt("Name", '22'),如果可能的话,谢谢。

1 个答案:

答案 0 :(得分:1)

好像你想使用列别名。但是在WHEREHAVING子句中不可能,它只引用SQL标准定义的输入列而不是输出列。这个相关答案的细节:
GROUP BY + CASE statement

你必须使用子查询作为包装器,这种方式违背了你缩短代码的目的,如果优化器无法看清你的特技,可能会更慢:

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