PostgreSQL中不需要的换行符翻译

问题描述 投票:1回答:1

在PostgreSQL中,我有许多视图,其中包含以下SQL:

select replace(
  replace(details, E'\n\n', '</text></line><line><text>'||E'\n'),
  E'\n', '</text></line><line><text>'||E'\n')
from personal_details

这用于用</text></line><line><text>替换数据中的换行符,因此我可以按所需的格式获得输出,但这实际上不在那儿。

问题:

[当我将此SQL(通过PhpPgAdmin)添加到视图的定义中并保存时,Postgresql似乎会转换换行符,因此视图定义现在看起来像这样:

select replace(
      replace(details, '

'::text, '</text></line><line><text>'::text || '
'::text), '
'::text, '</text></line><line><text>'::text || '
'::text))
from personal_details

如您所见,它正在翻译E'\n\n',我不希望它执行此操作,因为它会使视图定义更难以理解,以及是否有人第一次看到翻译后的SQL(如果他们想更改为View)),与我最初输入为View Definition的SQL相比,他们可能不了解View在做什么。

我可能有一个显而易见的解决方案?但是我如何防止它这样做,这会对我的视图产生不利影响吗?

sql database postgresql newline
1个回答
1
投票

恐怕答案可能是“否”。

E'...'形式只是字符串字面量的一种替代表示形式,因此不会保留在存储的值中。

现在,您可以提出一个很好的论点,即PostgreSQL中的字符串表示代码应扫描每个字符串并查找可能的转义字符。然后,它可以显示PostgreSQL特定的转义格式。我看不到todo list上提到的任何内容,因此可能值得在一个PostgreSQL邮件列表上提出这个问题(也许从一般而不是黑客开始),并了解人们对这种变化的看法。

© www.soinside.com 2019 - 2024. All rights reserved.