将字符串转换为数组 - PostgreSQL

2024-01-12

我在表中有一列存储用逗号分隔的名称,例如:“Mel's Hou Rest,Mel's Lad Rest”。我需要的是将这个字符串转换为以逗号分隔的数组。

我需要的查询是:

SELECT home_location, subs_state FROM cust
WHERE (home_location = ANY('{"Mel''s Hou Rest", Mel''s Lad Rest"}')) AND subs_state = 'active'

我已经尝试过这个,但我不断收到错误:

WHERE (home_location = ANY(string_to_array("Mel's Hou Rest, Mel's Lad Rest", ',')::text[])

有什么方法可以完成此任务,而无需我将数据库从“文本”更改为“数组”


SQL 使用单引号字符串文字 https://www.postgresql.org/docs/11/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS。你的绳子"Mel's Hou Rest, Mel's Lad Rest"它周围有双引号,这使得 Postgres 将其解释为带引号的标识符 https://www.postgresql.org/docs/11/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS。您可以使用两个单引号将一个单引号包含在字符串中。

SELECT * FROM cust WHERE home_location = ANY(string_to_array("Mel's Hou Rest, Mel's Lad Rest", ','))
-- ERROR: column "Mel's Hou Rest, Mel's Lad Rest" does not exist

SELECT * FROM cust WHERE home_location = ANY(string_to_array('Mel''s Hou Rest, Mel''s Lad Rest', ','))
-- OK

另请注意string_to_array不会删除分隔符周围的空格,这可能不是您所期望的。

例如:

-- With whitespace around the delimiter

=> SELECT string_to_array('foo, bar', ',')
 string_to_array 
-----------------
 {foo," bar"}

=> select 'foo' = ANY(string_to_array('foo, bar', ','));
 ?column? 
----------
 t

=> select 'bar' = ANY(string_to_array('foo, bar', ','));
 ?column? 
----------
 f

-- Without extra whitespace

=> SELECT string_to_array('foo,bar', ',')
 string_to_array 
-----------------
 {foo,bar}

=> select 'foo' = ANY(string_to_array('foo,bar', ','));
 ?column? 
----------
 t

=> select 'bar' = ANY(string_to_array('foo,bar', ','));
 ?column? 
----------
 t

当然,这可以通过在查询中使用输入之前对其进行规范化来解决。在某些情况下,删除查询中的空格可能是可行的string_to_array(regexp_replace('foo, bar', '\s*,\s', ','), ',')但如果没有充分的理由,我不会让查询变得复杂。

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

将字符串转换为数组 - PostgreSQL 的相关文章

随机推荐

  • Ruby on Rails 显示带有 image_tag src 的图像

    我的里面有一张图片app assets images文件夹 我在视图页面中尝试显示图像 当我在本地主机中加载页面时 我的图像仅显示 assets 在其 src 路径中 img alt Assets src assets 我不明白为什么会出现
  • 如何更改 EKS 中 kube-scheduler 的行为?

    我是 Kubernetes 新手 对设置它完全陌生EKS 我正在努力实现共享GPU在多个 Pod 之间 但是为了查看一些文档和文章 我发现我应该更新kube scheduler configuration带有参数 然后我可以进行必要的更改以
  • 未找到自制程序的 gpg-agent

    我正在尝试安装gpg agent 但我收到一个错误 该公式不存在 brew install gpg agent Error No available formula with the name gpg agent gt Searching
  • 将 RichTextBox 中的制表符转换为空格

    I have a WinForms application with a RichTextBox control on the form Right now I have the AcceptsTabs property set to tr
  • R 中的 Predict.lm() - 如何获得拟合值周围的非常量预测带

    所以我目前正在尝试绘制线性模型的置信区间 我发现我应该为此使用 Predict lm 但我在真正理解该函数时遇到一些问题 并且我不喜欢在不知道发生了什么的情况下使用函数 我找到了几个关于这个主题的操作方法 但只有相应的 R 代码 没有真正的
  • Nunjucks 中的 Javascript 函数

    所以我在 Nunjucks 文档中找到了这个 函数调用 如果您已将 JavaScript 方法传递给模板 则可以像平常一样调用它 foo 1 2 3 但我似乎无法工作 我尝试将我的函数放在 html 页面上
  • 选择文件夹对话框 WPF

    我开发了一个 WPF4 应用程序 在我的应用程序中 我需要让用户选择一个文件夹 应用程序将在其中存储某些内容 文件 生成的报告等 我的要求 能够查看标准文件夹树 能够选择文件夹 WPF 外观和感觉 此对话框必须看起来像为 Windows V
  • 在 R 版本 3.0.2 上安装 Rtools

    我已经安装了devtools对于 R 但是当我使用以下命令调用库时 library devtools 我得到以下输出 WARNING Rtools is required to build R packages but is not cur
  • 使用vba将文件从一个文件夹复制到另一个文件夹

    我知道有一些关于这个主题的类似帖子 但是 我有一个与我在这里看到的所有代码 在谈论这个主题时 不同的代码 我收到的错误是找不到该文件 但这是不可能的 因为我正在 fso CopyFile 中用作 SOURCE 的同一文件夹中搜索文件 所以我
  • C# Winform 关闭程序后进程仍在Windows任务列表管理器中

    为什么关闭程序后该进程仍在Windows任务列表管理器中 我使用登录Form cs STAThread static void Main Application EnableVisualStyles Application SetCompa
  • 我可以从同一解决方案中的不同项目访问另一个项目的嵌入式资源吗?

    我有一个 xml 文件 它作为 Project A 中的嵌入资源 我想从引用 Project A 的 Project B 访问此嵌入资源 基本上 Project B 由单元测试组成 我使用 ReSharper 运行它们 当我在 Projec
  • Python可写缓冲区/内存视图到数组/字节数组/ctypes字符串缓冲区

    Problem 固定大小记录的二进制数据 想要使用struct unpack from和struct pack into来操作二进制数据 不需要数据副本 想要内存中的多个视图来简单地抵消计算等 数据可以位于 array array byte
  • scp通过ssh隧道打开

    我想从已与服务器打开反向隧道的计算机发送文件 反向隧道将计算机上的端口 22 与服务器上的端口 2222 连接 autossh M 0 q f N o ServerAliveInterval 120 o ServerAliveCountMa
  • @AttributeOverride 不适用于继承

    我正在尝试更改子类表中的列名 但 AttributeOverride 注释并未更改它 Entity Table name emp Inheritance strategy InheritanceType TABLE PER CLASS pu
  • 如何删除单击 uib-accordion-heading 时出现的蓝色边框?

    我已尝试以下问题中提出的解决方案但无济于事 从 Chrome 中的 css 自定义样式按钮中删除蓝色边框 https stackoverflow com questions 20340138 remove blue border from
  • 使用 rsync+ssh+公钥作为与 ssh 密钥所有者不同的用户同步本地和远程目录

    目标是通过 ssh 同步本地和远程文件夹 我当前的用户是user1 并且我通过 ssh 对服务器进行了无密码访问设置server1 我想将本地文件夹与上的文件夹同步server1借助于rsync公用事业 通常我会运行 rsync rtvz
  • MergeLatest 的默认值

    官方文档 https doc akka io docs akka current stream operators Source or Flow mergeLatest html of MergeLatest状态 MergeLatest 为
  • QueryPerformanceCounter 和溢出

    我正在使用 QueryPerformanceCounter 在我的应用程序中进行一些计时 然而 运行几天后 该应用程序似乎停止正常运行 如果我只是重新启动应用程序 它就会再次开始工作 这让我相信我的计时代码存在溢出问题 Author Rya
  • 将 CopyPlugin 添加到 next.config.js

    我想将以下内容添加到我的 webpack 配置中 module exports otherConfig plugins new CopyPlugin from node modules pdftron webviewer public to
  • 将字符串转换为数组 - PostgreSQL

    我在表中有一列存储用逗号分隔的名称 例如 Mel s Hou Rest Mel s Lad Rest 我需要的是将这个字符串转换为以逗号分隔的数组 我需要的查询是 SELECT home location subs state FROM c