我有一个问题,我希望有人能够提供帮助...
在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)添加到View的定义中并保存它时,Postgresql似乎会翻译换行符,以便View Definition现在看起来像这样:
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进行更改,例如,与我最初作为视图定义输入的SQL相比,他们可能无法理解View正在做什么。
我可能会忽略一个明显的解决方案?但是我如何阻止它这样做?这会对我的观点产生任何不利影响吗?
答案 0 :(得分:1)
我担心答案可能是“不”。
E'...'
表单只是一个替代字符串 - 文字表示,因此它不会保留在存储的值中。
现在,你可以提出一个很好的论据,即PostgreSQL中的字符串表示代码应扫描每个字符串并查找可能的转义字符。然后它可以显示PostgreSQL特定的转义格式。我看不出todo list上提到的任何内容所以在PostgreSQL邮件列表中提出这个问题可能是值得的(也许从一般而不是黑客开始)并看看人们对这样一个变化的感受是什么此