如何在PostgreSQL中插入新行

时间:2015-10-05 13:23:52

标签: postgresql

我希望在列长度>时创建新行。在PostgreSQL查询中有100个,这是我的代码:

SELECT message,  CASE WHEN length(message) > 100 
THEN  message||'\n' end as res FROM msg.list_trx

但我的查询无效。

2 个答案:

答案 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.html
  

4.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)