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

标签 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')

最佳答案

您似乎想使用列别名。但这在 WHEREHAVING 子句中是不可能的,它们只引用输入列,而不是输出列 - 正如 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/

相关文章:

mysql - 在同一个查询中选择组和用户

mysql - 在 MySQL 中选择变量时防止重复

mysql - 将行从一个数据库文件复制到另一个数据库文件

sql - Oracle - 查询大型数据集需要很长时间 - 有没有办法优化它?

postgresql - go Scratch 容器和 PG 容器之间的 SSL 连接问题。如何解决?

ruby-on-rails - 如何使用 Postgres 备份/恢复 Rails 数据库?

c# - 在数据库中插入文本框值

android cursor movetofirst 性能问题

javascript - Web应用程序在客户端存储大量数据

PostgreSQL 错误的 IntegrityError