3
如果執行SELECT 'test', 123
,則輸出將爲兩列,第一列爲未知數據類型,第二列爲數據類型爲整數的列。爲什麼postgres將不同類型分配給字符串?
如果執行SELECT DISTINCT 'test', 123
,則輸出將爲兩列,第一列爲數據類型爲文本,第二列爲數據類型爲整數的列。
爲什麼添加DISTINCT
函數與運行不包含DISTINCT
的查詢在數據類型方面有所不同?
如果執行SELECT 'test', 123
,則輸出將爲兩列,第一列爲未知數據類型,第二列爲數據類型爲整數的列。爲什麼postgres將不同類型分配給字符串?
如果執行SELECT DISTINCT 'test', 123
,則輸出將爲兩列,第一列爲數據類型爲文本,第二列爲數據類型爲整數的列。
爲什麼添加DISTINCT
函數與運行不包含DISTINCT
的查詢在數據類型方面有所不同?
此行爲在Chapter 10. Type Conversion中描述。
在10.1. Overview你可以找到:
如果沒有文字,然後佔位類型未知分配的初始字符串指定的類型,在後期階段得到解決。
要選擇不同的值Postgres必須將字符串文字轉換爲具有相等運算符的類型。這種情況類似於聯合:
select 'abc', 1
union
select 'def', 1
其中第一列被解析爲text
。該規則在10.5. UNION, CASE, and Related Constructs描述:
- 如果所有輸入都是類型未知,解析成類型文本(字符串類別的優選類型)。