sql - 比较两列的字符串
问题描述
我在 Postgresql 的表中工作。一栏有名字,一栏有人的完整地址,有时包括名字。我想找到第一个名称列中的条目在第二列中的所有行。
例子
| id | firts_name | address |
|---|--------|------------------------|
| 1 | anna | anna miller street 1 |
| 2 | bob | b. smith street 2 |
| 3 | charly | charly wilson street 3 |
我想返回第 1 列和第 3 列
我试过这个
select id, first_name, address from table1
where first_name ~ address
我得到的结果总是空的。
解决方案
波浪号 ( ~
) 是正则表达式匹配运算符;在您的情况下,您可能可以使用简单的模式匹配运算符~~
(或LIKE
),并且您确实需要通过添加通配符来创建匹配模式:
select id, first_name, address from table1
where address ~~ concat('%', first_name, '%')
推荐阅读
- node.js - 如何从 JWT 令牌中提取信息?
- linux - `gio` 命令不会显示 `metadata::custom-icon` 属性
- eclipse - Eclipse JavaFX 找不到如何将不同的链接设置到同一个按钮
- javascript - 我从未见过的 JavaScript 函数调用
- node.js - Next Start not working - Cant find index.js and throwing cannot find module 错误
- c++ - 为什么当我为 C++ 代码打印字符时,我的终端会发出哔声?
- database - 如何在 prisma 中使用 connectOrCreate 与多对多
- apache-spark - 对于具有 35,000 个分区的 Spark 作业,建议的集群大小是多少
- ios - 在组合中使用 breakpointOnError()
- node.js - WebStorm 代码完成 - 前端 (React) 和后端 (Deno)