我希望在列长度>时创建新行。在PostgreSQL查询中有100个,这是我的代码:
SELECT message, CASE WHEN length(message) > 100
THEN message||'\n' end as res FROM msg.list_trx
但我的查询无效。
答案 0 :(得分:3)
您在新行文字之前缺少e
(对于类似c的特殊字符需要它):
SELECT message, CASE WHEN length(message) > 100
THEN message||e'\n' end as res FROM msg.list_trx
在段落
上查看http://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html4.1.2.2。具有C风格转义的字符串常量
了解更多信息。
答案 1 :(得分:1)
您可以使用regexp_replace()。下面的查询将长消息拆分为30个字符的行:
create table messages (id int, message text);
insert into messages values
(1, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt'),
(2, 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque');
select id, regexp_replace(message, '(.{30})', e'\\1\n', 'g')
from messages
id | regexp_replace
----+--------------------------------
1 | Lorem ipsum dolor sit amet, co+
| nsectetur adipiscing elit, sed+
| do eiusmod tempor incididunt
2 | Sed ut perspiciatis unde omnis+
| iste natus error sit voluptat+
| em accusantium doloremque
(2 rows)