gpt4 book ai didi

sql - postgresql 9.5 : trying to split a string into two fields based on spaces

转载 作者:行者123 更新时间:2023-11-29 14:04:43 25 4
gpt4 key购买 nike

我在 postgres 表中有一个字段,如下表所示。我想根据空格作为分隔符将字符串拆分为两个单独的组件。请注意,所有字段都是文本。

 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" ""

现在的微妙问题是,在某些情况下,whhid 中的两个子字符串之间存在不止一个空格,而在其他情况下,只有一个空格。

我试过的查询如下:

UPDATE intersection_table_wi 
SET wv002 = SPLIT_PART(BTRIM(whhid), '/\s+', 1),
wv003 = SPLIT_PART(BTRIM(whhid), '/\s+', 2);

谁能告诉我如何修复此查询以获得上面指定的目标?

最佳答案

split_part() 不支持正则表达式。您只能指定一个“简单”字符串作为分隔符。

要根据正则表达式进行拆分,您需要 regexp_split_to_array()

UPDATE intersection_table_wi 
SET wv002 = (regexp_split_to_array(BTRIM(whhid), '\s+'))[1],
wv003 = (regexp_split_to_array(BTRIM(whhid), '\s+'))[2];

关于sql - postgresql 9.5 : trying to split a string into two fields based on spaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com