2012-12-14 57 views
4

我發現這樣的代碼:PostgreSQL - 符號|||是什麼做?

SELECT 'a' ||| 'b'; 

我試圖谷歌這個操作符的意思,但谷歌忽略了象徵性的數據。 SymbolHound沒有返回任何有意義的結果。

我測試了它一個PostgreSQL 8.4服務器和9.1服務器。

在PostgreSQL 8.4,它是相同字符串連接,有一點不同:

SELECT 'a' ||| 'b'; -- 'ab' 
SELECT 'a' || 'b'; -- 'ab' 

SELECT 'a' ||| NULL; -- 'a' 
SELECT 'a' || NULL; -- NULL 

在PostgreSQL 9.1,該操作符沒有定義。

SELECT 'a' ||| 'b'; -- ERROR 
SELECT 'a' || 'b'; -- 'ab' 
SELECT 'a' || NULL; -- NULL 

這是正式記錄的地方嗎?這個配置是特定的嗎?

回答

10

|||不是PostgreSQL附帶的標準操作符; as you can see here, it doesn't exist in stock 8.4 either。我會說有人在你的8.4安裝中安裝了CREATE OPERATOR

嘗試在8.4 DB中使用psql命令\do(即「描述運算符」),或者執行pg_dump並檢查轉儲以確定運算符及其關聯函數的定義。

select * from pg_operator where oprname = '|||';也可能有用。請注意0​​列,其中顯示了實現運算符的函數。

+1

'|||'的特殊NULL行爲頗具啓發性。 –

+0

你是100%正確的,select * from pg_operator where oprname ='|||';返回的運算符,由函數「textcat_null」定義。 –