【发布时间】:2014-08-12 21:26:20
【问题描述】:
使用 PostgreSQL,我想根据两个(不是一个)字符拆分表中某一列中出现的值。我的专栏id2 包含以下值:
chr1:10000485-10006485@NM_022787@NMNAT1
我想相应地将列分成三列(同时使用“:”和“-”字符作为分隔符:
chr1 | 10000485 | 10006485@NM_022787@NMNAT1
目前我的代码是:
select split_part(id2, ':', 1)s1,split_part(id2, ':', 2) s2, id2
from MyTable
输出如下(两列,其中 s1 和 s2 是标题):
s1 | s2
chr1 | 10000485-10006485@NM_022787@NMNAT1
如何根据“:”和“-”拆分id2?
我可以使用s2 以某种方式进行顺序拆分吗?
我尝试使用:
select split_part(id2, ':', 1)s1,split_part(id2, ':', 2) s2, split_part(s2, '-', 2)
但是得到了错误信息:
ERROR: column "s2" does not exist LINE 7: ... ':', 1)s1,split_part(id2, ':', 2) s2, split_part(s2, '-', 2... ^ ********** Error ********** ERROR: column "s2" does not exist SQL state: 42703 Character: 160
【问题讨论】:
-
欢迎来到 SO。请考虑 markdown formatting 发布您的帖子。
标签: sql postgresql split pattern-matching