当PostgreSQL查询中的列长度> 100时,我想换行,这是我的代码:
SELECT message, CASE WHEN length(message) > 100
THEN message||'\n' end as res FROM msg.list_trx
Run Code Online (Sandbox Code Playgroud)
但我的查询不起作用。
您e在新行文字之前丢失了(类似 c 的特殊字符需要它):
SELECT message, CASE WHEN length(message) > 100
THEN message||e'\n' end as res FROM msg.list_trx
Run Code Online (Sandbox Code Playgroud)
在段落中查看http://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html
4.1.2.2. 带有 C 风格转义的字符串常量
了解更多信息。
您可以使用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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5675 次 |
| 最近记录: |