如何在 Postgres 9.5 中替换多个特殊字符

2024-03-21

我有一个包含可能包含特殊字符的名称列表的表:

id   name
1    Johän
2    Jürgen
3    Janna
4    Üdyr
...

是否有一个函数可以将每个字符替换为另一个特定字符? (不一定是无重音的)。像这样的事情:

SELECT id, function('ä,ü',name,'ae,ue');
Result:

    id   name
    1    Johaen
    2    Juergen
    3    Janna
    4    UEdyr
    ...

代替()

如果您只想替换一个或几个字符,可以使用函数replace(string text, from text, to text)来替换字符串子字符串中的所有出现位置。替换功能可用于将一个字符替换为多个字符。

翻译()

如果你想将一些字母翻译成其他字母,你可以使用函数translate(string text, from text, to text),它将字符串中与from中的字符匹配的任何字符替换为to集中的相应字符。

一些可以使用的数据:

drop table if exists xyz;

create table xyz (
    id serial not null,
    name varchar(30)
);

insert into xyz (name) values
    ('Juhänäo'),
    ('Jürgüen'),
    ('Dannäu'),
    ('Übüdyr');

替换函数示例:

select replace(name, 'ä', 'a') from xyz;

此函数将名称列中的字母 ä 替换为字母 a。 Juhanao 变成 Juhanao。

select replace(name, 'ä', 'ae') from xyz;

现在它用 ae 替换字母 ä。

select replace(replace(replace(name, 'ä', 'ae'), 'ü', 'ue'), 'Ü', 'Ue') from xyz;

不太好,但在这个例子中,所有 ä 都变成了 ae,ü 都变成了 ue,Ü 都变成了“Ue”。

update xyz set name = replace(replace(replace(name, 'ä', 'ae'), 'ü', 'ue'), 'Ü', 'Ue');

更改字母并更新行。更新结果如下:

Juhaenaeo
Juergueen
Dannaeu
Uebuedyr

翻译功能示例:

select translate(name, 'ä,ü,Ü', 'a,u,U') from xyz;

将所有字母 ä 翻译为 a、ü 翻译为 u、Ü 翻译为 U。

update xyz set name = translate(name, 'ä,ü,Ü', 'a,u,U');

更新表,以便翻译所有预定义字母并将更改保存到数据库中。更新结果如下:

Juhanao
Jurguen
Dannau
Ubudyr

更多信息:

用多字符字符串替换字符 https://stackoverflow.com/questions/24676779/replace-characters-with-multi-character-strings

Postgresql 字符串函数 https://www.postgresql.org/docs/current/static/functions-string.html

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

如何在 Postgres 9.5 中替换多个特殊字符 的相关文章

  • plpgsql 中的伪加密() 函数采用 bigint

    我正在开发一个生成随机 ID 的系统 如答案 2 所示here https stackoverflow com questions 12575022 generating an instagram or youtube like ungue
  • 查找具有唯一两列组合的所有行

    我有这张桌子messages sender id recipient id 1 2 1 3 1 3 2 1 3 1 2 3 我希望选择这样的行 Either sender id or receiver id current user id
  • 如何为 pg_trgm `'term' % ANY (array_column)` 查询索引字符串数组列?

    我尝试过普通的Postgresgin索引以及 pg trgmgin trgm ops and gist trgm ops索引 使用此解决方法 https stackoverflow com a 33016333 283398 https s
  • 连接到 Docker Postgres 容器连接超时

    所以我所做的是 docker run d e POSTGRES USER user e POSTGRES PASSWORD 456789 name admin service p 5432 5432 postgres 当我检查时docker
  • 如何手动设置auto_increment的下一个值?

    我手动向表中添加了一些行 并且还手动设置了 ID 自动增量 现在 当我尝试通过我的应用程序将新行添加到数据库表中时 我收到错误 创建的 ID 值已存在 如何手动设置下一个ID值 例如 在表中我必须有ID 那么如何告诉PostgreSQL 下
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • Mac psql/readline - 库未加载

    我正在 Mac Sierra 10 12 3 上工作 并且尝试通过以下方式访问 PostgreSQL 数据库psql命令 但它引发了错误 dyld Library not loaded usr local opt readline lib
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • 基于列顺序的查询速度

    数据库中列类型的顺序对查询时间有影响吗 例如 具有混合排序 INT TEXT VARCHAR INT TEXT 的表的查询速度是否会比具有连续类型 INT INT VARCHAR TEXT TEXT 的表慢 答案是肯定的 这确实很重要 而且
  • 使用连接查询检索行

    我有两张这样的桌子 A B col1 col2 col1 col2 一个表包含 300k 行 B表包含400k行 如果表 A 的 col1 与表 B 的 col1 匹配 我需要计算它 我写了一个这样的查询 select count dist
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • 从备份恢复 PostgreSQL 数据库,没有外键约束问题

    我有一个包含大约 85 个以上表的 postgresql 数据库 我定期使用pg dump 通过 php pgadmin 在复制模式下 备份文件的大小几乎为 10 12 MB 现在我面临的问题是 每当我尝试恢复数据库时 都会出现外键约束问题
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • Postgresql插入触发器设置值

    假设在 Postgresql 中 我有一个表T它的一栏是C1 我想在新记录添加到表中时触发一个函数T 该函数应该检查列的值C1在新记录中 如果它为 null 空 则将其值设置为 X 这可能吗 您需要触发器是正确的 因为为列设置默认值对您不起
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为

随机推荐