【问题标题】:Replace with single quote to double single quote not working in PostgreSQL 12用单引号替换双单引号在 PostgreSQL 12 中不起作用
【发布时间】:2019-11-19 07:33:43
【问题描述】:

用单引号替换双引号在 PostgreSQL 12 中不能正常工作,在 PostgreSQL 11 中工作正常。

PostgreSQL 12

查询:SELECT REPLACE(patient.note,'''',''''''), * FROM patient

输出文本:Medicare Secondary Veteran�s Administration

PostgreSQL 11

查询:SELECT REPLACE(patient.note,'''',''''''), * FROM patient

输出文本:Medicare Secondary Veteran’s Administration

如果您有任何解决方案,请告诉我。

【问题讨论】:

  • 向我们展示两者:PostgreSQL 11 和 PostgreSQL 12 当你这样做时你会得到什么:select note from patient?谢谢!
  • 绝对不是单引号。我怀疑它是否被替换过。
  • 看来您迁移到 Postgres 12 更改了报价(例如使用了错误的编码) - Postgres 11 的输出与您的代码不匹配。输出显示 而您的代码仅使用“直”引号:' 加上 Postgres 11(或 12)的输出我希望 two 单引号,例如'' - 所以即使第二个输出看起来也不正确。

标签: sql postgresql postgresql-11 postgresql-12


【解决方案1】:

这与你的替换无关,因为有问题的字符不是撇号' (U+0027),而是一个“右单引号”字符 (U+2019)。

可能您连接到 PostgreSQL v12 的客户端编码设置不正确,因此字符被翻译成不受欢迎的东西。将角色转移到 v12 时也可能出现错误。

要诊断此问题,请尝试

SELECT note::bytea FROM patient;

如果其中包含e28099,则说明您的数据库中的数据正常,问题在于您的客户端编码。这里假设数据库的服务器编码是UTF8

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2016-09-14
    相关资源
    最近更新 更多