我正在使用 Chinook Database作为使用加密测试概念的一种方式。我发现我可以使用 LIKE
关键字:
SELECT pgp_sym_decrypt("Name", '22') FROM "Artist" WHERE pgp_sym_decrypt("Name", '22') LIKE '%a%';
如果可能的话,我目前正在尝试避免使用第二个 pgp_sym_decrypt("Name", '22')
。
最佳答案
您似乎想使用列别名。但这在 WHERE
或 HAVING
子句中是不可能的,它们只引用输入列,而不是输出列 - 正如 SQL 标准所定义的那样。此相关答案中的详细信息:
GROUP BY + CASE statement
您将不得不使用子查询作为包装器,这违背了您缩短代码的目标,并且如果优化器无法看穿您的特技,则可能会变慢:
SELECT *
FROM (SELECT pgp_sym_decrypt("Name", '22') AS expr FROM "Artist") sub
WHERE expr LIKE '%a%';
关于sql - 在表达式上使用 LIKE 从表中选择加密项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814963/