【資料庫】postgresql擷取最後一個字元之前的所有字元,如V1.0.0.20230731110947中取V1.0.0

木头左發表於2024-03-29

在PostgreSQL中,我們可以使用position函式和split_part函式來擷取最後一個.之前的所有字元。這兩個函式都非常有用,尤其是在處理文字資料時。

position函式

position函式用於查詢一個字串中某個子串的位置。它的語法如下:

POSITION(substring IN string)

其中,substring是要查詢的子串,string是要在其中查詢子串的字串。如果找到了子串,則返回第一個匹配的位置;否則返回0。

例如,假設我們有一個名為mytable的表,其中有一列名為mycolumn的資料型別為text。我們想要找到每個記錄中最後一個.之前的所有字元,可以使用以下查詢:

SELECT position('.' IN mycolumn) - length(mycolumn) + 1 AS new_length
FROM mytable;

這將返回一個新的列new_length,其中包含了每個記錄中最後一個.之前的所有字元的長度。

split_part函式

split_part函式用於將一個字串分割成多個子串。它的語法如下:

SPLIT_PART(string, delimiter, field)

其中,string是要分割的字串,delimiter是分隔符,field是要返回的子串的位置。如果field大於字串中的子串數,則返回空字串。

例如,假設我們想要將mycolumn中的每個字串按照.進行分割,並返回最後一個.之後的所有字元,可以使用以下查詢:

SELECT split_part(mycolumn, '.', -1) AS new_string
FROM mytable;

這將返回一個新的列new_string,其中包含了每個記錄中最後一個.之後的所有字元。

綜合運用position和split_part函式

有時候我們需要同時使用position和split_part函式來進行更復雜的文字操作。例如,假設我們想要從mycolumn中的每個字串中提取出最後一個.之後的所有字元,但是隻提取前三個字元。可以使用以下查詢:

SELECT substring(mycolumn FROM position('.' IN mycolumn) - length(mycolumn) + 1 FOR 3) AS new_string
FROM mytable;

這將返回一個新的列new_string,其中包含了每個記錄中最後一個.之後的前三個字元。注意,這裡使用了substring函式來擷取字串的一部分。

相關文章