【資料庫】PostgreSQL中使用`SELECT DISTINCT`和`SUBSTRING`函式實現去重查詢

木头左發表於2024-03-28

在PostgreSQL中,我們可以使用SELECT DISTINCTSUBSTRING函式來實現對某個欄位進行去重查詢。本文將介紹如何使用這兩個函式來實現對resource_version欄位的去重查詢。

1. SELECT DISTINCT語句

SELECT DISTINCT語句用於從表中選擇不重複的記錄。如果沒有指定列名,則會選擇所有列。在本例中,我們將使用SELECT DISTINCT語句來選擇去重後的resource_version欄位值。

SELECT DISTINCT resource_version
FROM tb_resource;
2. SUBSTRING函式

SUBSTRING函式用於從字串中提取子串。它有三個引數:原始字串、起始位置和子串長度。在本例中,我們將使用SUBSTRING函式來擷取每個resource_version欄位值的前N個字元,其中N為第4個.之後的字元數。

SELECT DISTINCT substring(resource_version, 0, position(split_part(resource_version,'.',4) in resource_version)-1)
FROM tb_resource;
3. 結合使用SELECT DISTINCTSUBSTRING函式

有時候我們需要同時使用SELECT DISTINCTSUBSTRING函式來進行更復雜的文字操作。在本例中,我們將使用這兩個函式來實現對每個resource_version欄位值的前3個字元進行去重查詢。

SELECT DISTINCT substring(resource_version, 0, position(split_part(resource_version,'.',4) in resource_version)-1)
FROM tb_resource;

以上程式碼中,我們首先使用position(split_part(resource_version,'.',4) in resource_version)-1獲取第4個.之前的字元數,然後使用該值作為子串長度來擷取每個resource_version欄位值的前N個字元。最後,我們使用SELECT DISTINCT語句來選擇去重後的字首字串。

相關文章