我有一个小的Porstgre数据库,我有一个包含多列的表。
其中一列包含如下数据:
test1 (80%)
test2 (21%)
test3 (40%)
等......
我想做的是能够将该百分比移到另一列,以便数据看起来像:
TEST_COLUMN | PERCENTAGE_COLUMN
test1 | 80%
test2 | 21%
等...
知道我有超过10k的记录,如果有办法实现这一点,而不必手动移动任何东西,将会很有帮助。 提前谢谢
答案 0 :(得分:2)
您可以使用REGEXP
:
SELECT col ,TRIM(REGEXP_REPLACE(col, '(\(\d+%\))$', '')) AS test_column
,(REGEXP_MATCHES(col, '(\d+%)\)$'))[1] AS percentage_column
FROM t;
<强> DBFiddle Demo 强>
答案 1 :(得分:1)
你可以正则表达它或其他文本过程,例如:
t=# with a(v) as (values('test1 (80%)'),('test2 (21%)'),('test3 (40%)'))
, p as (select v,string_to_array(v,'(') ar from a)
select v, ar[1],translate(ar[2],')','') from p;
v | ar | translate
-------------+--------+-----------
test1 (80%) | test1 | 80%
test2 (21%) | test2 | 21%
test3 (40%) | test3 | 40%
(3 rows)