我在一列的不同行中都有这样的文字
因此,我只希望将88个文本插入另一列。 什么是查询?
不是88,但是那个位置有两个数字
答案 0 :(得分:0)
88总是2位数字吗?如果是这样,这对Postgres和Redshift来说对我来说很有效,我相信可以为您提供所需的东西:
SELECT
CASE
WHEN LOWER(column)
~ '.*[a-z]{2}\_[0-9]{2}\_[0-9]{4}.*' THEN SPLIT_PART(column,'_',2)
WHEN LOWER(column)
~ '[a-z]{2}\_[0-9]{4}\_[0-9]{2}.*' THEN LEFT(SPLIT_PART(column,'_',3),2)
END As get_two_digit_number
〜(波浪号)类似于LIKE,但允许您通过正则表达式进行模式匹配。请访问regexr.com,然后将示例和代码粘贴到''之间,以查看其匹配的内容
SPLIT_PART接受与模式匹配的字符串,然后在我选择的字符上将其断开,这里是'_'。最后一个数字是返回的休息时间
以'xxxxxxxxxxx ab_88_2018 xxxxxx'为例,SPLIT_PART('xxxxxxxxxxx ab_88_2018 xxxxxx','',2)将返回'88',因为88是''之后的第二部分。如果输入1,它将返回之前“ _”
的所有内容