在查询输出(DB2)中将列值拆分为两列

时间:2013-11-08 22:48:55

标签: db2

如何将列值拆分为输出中的两个值?我需要在一列中包含数字,在另一列中包含字母。

例如 1

Existing
Column 
========
678J
2345K

我需要输出:

Column 1            Column 2
========            ========
678                   J
2345                  K

现有列可以包含4个或5个字符,如示例所示。没有空间。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

您可以将所有字母转换为空格&将它们剥离,然后用另一列中的数字执行相反的操作:

SELECT trim(translate(mycol,repeat(' ',26),'ABCDEFGHIJKLMNOPQRSTUVWXYZ')) as col1,
       trim(translate(mycol,repeat(' ',10),'0123456789')) as col2
  FROM mytable

根据需要进行调整以翻译其他字符。

答案 1 :(得分:0)

我不确定WarrenT解决方案的性能,但它看起来非常重的解决方案。它完成了它应该做的事情,对数据的限制很少。如果您对数据有更多了解,可以进行优化。

字符串始终以1结尾,只有一个字母

select left(mycol, length(mycol)-1), right(mycol,1) from mytable