【发布时间】:2017-05-22 04:25:45
【问题描述】:
我在 postgres 表中有一个字段,如下表所示。我想根据空格作为分隔符将字符串拆分为两个单独的组件。请注意,所有字段均为 TEXT。
tablename: intersection_table_wi
wwhid
-----
"102 5"
"104 61"
"103 84"
所以我想把它转换成这样的目标:
wwhid wv002 wv003
----- ----- -----
"102 5" "102" "5"
"104 61" "104" "61"
"103 84" "103" "84"
问题是,当我编写查询时,我不断得到看起来更像这样的东西:
wwhid wv002 wv003
----- ----- -----
"102 5" "102 5" ""
"104 61" "104 61" ""
"103 84" "103 84" ""
现在微妙的问题是,在某些情况下,whid 中的两个子字符串之间有多个空格,而在其他情况下只有一个空格。
我尝试的查询如下:
UPDATE intersection_table_wi
SET wv002 = SPLIT_PART(BTRIM(whhid), '/\s+', 1),
wv003 = SPLIT_PART(BTRIM(whhid), '/\s+', 2);
谁能告诉我如何修复这个查询以获得上面指定的目标?
【问题讨论】:
-
双引号实际上是您数据的一部分吗?
-
是的,这些都是字符串。原始数据就是这样来的。我可以在变量被分离出来后对它们应用强制转换,但为了这个最小的例子,我只想保持简单。但答案是wwhid、wv002、wv003变量都是文本。
-
那么您正在将这些双引号存储在数据库中吗?
-
我认为它们是单引号。我这么说的唯一原因是因为如果我尝试使用双引号,那么我通常会收到关于表名之类的错误——因为双引号也用于表名,对。
标签: sql regex postgresql split