在Postgres表中将记录从一列分成两列

时间:2013-06-30 12:50:53

标签: postgresql

我的列地址如下所示:

address
--------------
Virginia Ave
Baker Ave
Elm Road
.....

我需要将每个记录分成2列。第一列将保留街道名称,第二列是街道缩写,所以它将如下所示:

StreetName          StreetAbbr
-----------       -----------
Virginia             Ave
Baker                Ave
Elm                 Road

什么是最简单,最有效的(我有大量的记录) 这样做?

感谢。

1 个答案:

答案 0 :(得分:1)

假设该字符串将是 StreetName StreetAbbr ,以下sql代码可能对您有用,我不确定它是最有效的,但有效:

CREATE TABLE TEST(
  ADDRESS VARCHAR(100));

INSERT INTO TEST(ADDRESS) VALUES('Virginia Ave');
INSERT INTO TEST(ADDRESS) VALUES('Baker Ave');
INSERT INTO TEST(ADDRESS) VALUES('Elm Road');

SELECT 
(string_to_array(ADDRESS, ' '))[1] AS StreetName,
(string_to_array(ADDRESS, ' '))[2] AS StreetAbbr
FROM TEST;

以下是带有示例的LINK。您也可以使用正则表达式或字符串简单函数(请参阅此link)。无论如何,在做这一切之前,你会想到规范化