使用 postgresql 查询结果进行字符串替换

2024-01-22

我有一个查询,它总是只返回一个元素作为结果。我想将此查询的结果附加到一个字符串中,我可以使用该字符串进行进一步处理

Example

select id from ids where some_condition

我想将此 id 附加到字符串中

like result_(id)_table,其中 id 必须替换为从上一个查询返回的 id(本质上是另一个表)

最后,我应该能够执行类似的查询

select * from result_id_table

其中,“result_id_table”是 id 被适当替换的表的名称


使用字符串连接:

-- Demo table structure
CREATE TABLE dummy ( id integer primary key, blah integer not null);
INSERT INTO dummy(id, blah) VALUES (1,1);

-- Single-valued query
SELECT id FROM dummy WHERE blah = 1;

-- Formatted with string concatenation
SELECT 'result_'||(id::text)||'_table' FROM dummy WHERE blah = 1;

-- Formatted using the `format` function
SELECT format('result_%s_table', id) FROM dummy WHERE blah = 1;

如果您正在收集其他信息,请使用子查询合并为字符串

SELECT 'result_'||(SELECT id FROM dummy WHERE blah = 1)||'_table'
FROM .... WHERE ...

或使用连接。

您的编辑表明您希望将其用作表名称。这可能意味着你的设计很糟糕。代替:

CREATE TABLE sometable_1 ( id integer primary key, ...);
CREATE TABLE sometable_2 ( id integer primary key, ...);
CREATE TABLE sometable_3 ( id integer primary key, ...);
...
CREATE TABLE sometable_n ( id integer primary key, ...);

你几乎总是会过得更好:

CREATE TABLE sometable(
     id integer not null,
     discriminator integer not null,
     primary key (id, discriminator),
     ...
);

或每个模式表。如果由于某种原因您无法使用这种方法,您可以使用 PL/PgSQLEXECUTE运行动态 SQL 的语句,例如:

EXECUTE format('SELECT * FROM sometable_%s WHERE blah = ?', 
            quote_ident((SELECT id FROM dummy WHERE blah = 1))
        )
USING 2;

查询“sometable_1”中“blah = 2”的行。手册中的更多信息,请参见EXECUTE ... USING http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN.

在 PostgreSQL 的常规 SQL 中根本不可能做到这一点。在应用程序或 PL/PgSQL 中执行此操作。 PL/PgSQLDO可以使用块,但性能会下降awful如果你一切都依赖它。

立即修复您的设计,以免为时已晚。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 postgresql 查询结果进行字符串替换 的相关文章

随机推荐

  • UICollectionView 最后一个单元格未对齐

    我是 iOS 新手 现在遇到一个问题 我的目标是获得一个带有过滤按钮的滑动条 我有一个 UICollectionView 作为其他视图中的子视图 除了最后一个单元格之外 所有视图都显示良好 这是 uicollectionview 的委托和日
  • 当我在平面上嵌入平面图时,如何找到包含预定义点的面

    我有一个嵌入在平面上的平面图 平面图 并且想要搜索它的面 该图不是连接的 而是由多个连接的图组成 这些图不能单独寻址 例如 子图可以包含在另一个图的表面中 我想找到包含某个二维点的多边形 面 多边形由图形的面形成 由于面孔数量相当大 我想避
  • 如何杀死扭曲的协议实例python

    我有一个使用 Twisted 用 python 编写的服务器应用程序 我想知道如何终止我的协议 bottalk 的实例 每次我获得新的客户端连接时 我都会在内存中看到该实例 print Factory clients 但是假设我想从服务器端
  • 如何将sql参数作为整数数据类型变量中的空值传递?

    如何将 sql 参数作为空值传递给整数数据类型变量 StockBO sBO new StockBO sBO Mode 2 if ddcmpanyname SelectedIndex 0 sBO Client id Convert ToInt
  • 如何检查引用的程序集在运行时是否可用?

    我正在创建一个简单的 独立的 net winforms 应用程序 它引用了程序集Microsoft SqlServer SqlWmiManagement Net Framework 4 的版本可能存在或不存在于客户端计算机上 如果该程序集不
  • 如何使用 es6 import 加载 emscripten 生成的模块?

    我正在尝试导入使用 emscripten 生成的模块作为 es6 模块 我正在尝试与基本示例 https kripken github io emscripten site docs porting connecting cpp and j
  • 跨多列排序 (Perl)

    对于以下代码 我将如何对多个列进行排序 目前 代码 1 得到一个 lista 中的文件数 directory2 使用正则表达式获取 fileName fileLocation and fileSize对于中的每个元素 list3 将 2 中
  • 数据注释验证属性中的 string.Format

    有没有办法使用格式化字符串而不是直接常量来设置数据注释消息 我需要像下面的代码一样设置必填字段 ErrorMessage 但它给了我一个错误 Required ErrorMessage string Format SystemMessage
  • Hyperledger Composer 点对点连接未建立

    我们使用 Hyperledger Composer 建立了一个业务网络 并通过创建对等点来创建参与者卡 当我们在导入参与者卡后尝试将对等方连接到本地的另一台计算机时 我收到以下错误 错误 尝试登录并获取用户上下文时出错 错误 尝试时出错 注
  • 运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中

    我有一个使用 cloud init 部署的 bash 脚本 我的 bash 脚本包含以下部分代码 GO111MODULE on go install cmd 当直接在已部署服务器的终端中运行我的 bash 脚本时 它按预期工作 但是当我在云
  • 我应该如何管理基于 Xml 的文档的不同不兼容格式

    我有一个应用程序 它以基于 Xml 的格式保存文档 例如 Word 文档 目前 从 xsd 文件生成的 C 类用于读取 写入文档格式 一切都很好 直到最近我不得不更改以下格式 该文件 我担心的是我的应用程序的未来版本的向后兼容性need能够
  • Ionic:如何不堆叠多个 toast 通知?

    我得到了以下 Ionic 代码片段 用于在工业应用程序中显示警报 错误 showError message string let toast this toastController create message message posit
  • Phpunit骨架生成器找不到扩展类

    我有一个基于 Zend Framework 的应用程序 我尝试使用 phpunit 生成测试用例的框架 Phpunit 似乎无法找到我尝试生成的类的父类 phpunit skeleton test Default Model Person
  • TFS 构建期间未找到程序集

    遇到问题的是项目在本地编译得很好 但 TFS 构建报告找不到程序集 日志文件将显示 2 gt C 程序文件 x86 MSBuild 12 0 bin amd64 Microsoft Common CurrentVersion targets
  • 如何将列聚合到 JSON 数组中?

    如何转换如下数据以便将数据存储在 ElasticSearch 中 这是一个 bean 数据集 我将按产品将其聚合到 JSON 数组中 List
  • 使用 MSBuild 从命令行生成用于 ClickOnce 部署的 setup.exe

    我有一个 MSBuild 脚本 用于构建 Windows 窗体应用程序 生成应用程序清单并对其进行签名 然后生成部署清单 该脚本还为我生成publish htm 文件 现在我需要生成 setup exe 文件 到目前为止我还无法弄清楚 VS
  • 如何在Python中使用带有字符异常的多行DOTALL

    我必须在 python 中找到多线模式 所以我使用正则表达式中的 DOTALL 但它发现的内容超出了我的需要 样本文件 if condition 1 some text some text if condition 1 condition
  • 我什么时候应该使用 $wpdb->prepare(如果有的话)?

    我很难弄清楚是否应该使用 wpdb gt prepare我在 WordPress 中进行数据库查询 以防止 SQL 注入等情况 The wpdb 法典 https codex wordpress org Class Reference wp
  • 如何从私有工作组队列接收消息

    我在远程计算机上有一个私有队列 每个人和匿名登录都可以完全访问 尝试接收时会产生以下代码并出错 var qpath FormatName DIRECT TCP xx xx xx xx PRIVATE QueueName var q new
  • 使用 postgresql 查询结果进行字符串替换

    我有一个查询 它总是只返回一个元素作为结果 我想将此查询的结果附加到一个字符串中 我可以使用该字符串进行进一步处理 Example select id from ids where some condition 我想将此 id 附加到字符串