有沒有辦法使用jdbc元數據或運行任何dbms特定查詢來獲取由dbms支持的集合函數列表?集合函數列表
Q
集合函數列表
5
A
回答
0
您的文章有多個數據庫標籤,每個數據庫都有系統目錄和/或信息模式,可讓您知道過程列表。然而,要查詢的表/視圖不同於數據庫引擎,但是...(例如,在Postgres中,您將加入pg_proc和pg_aggregate,因爲information_schema.routines不會告訴您哪些特效是聚合。)
假設在所有數據庫實現中都存在典型的集合函數(sum()
,count()
,avg()
...)通常是安全的。
我所知道的唯一的例外是Postgres的,它不支持any()
/some()
由於ambiguity in the syntax:
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
1
在SQL Server上,你可以查詢XML這是在安裝目錄:
DECLARE @xml XML
SELECT @xml = x.y
FROM OPENROWSET(BULK 'C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlToolsData\1033\SQLCommonObjects.xml', SINGLE_BLOB) x(y)
;WITH XMLNAMESPACES('http://tempuri.org/SqlCommonObjects.xsd' AS ns)
SELECT
Category.Name.value('ns:DisplayName[1]', 'VARCHAR(MAX)') [Category],
[Function].Name.value('ns:Name[1]', 'VARCHAR(MAX)') [Function],
[Function].Name.query('for $p in ns:Parameters/ns:Parameter return
concat($p/ns:Name[1],",")').value('.', 'VARCHAR(MAX)') Parameters
FROM @xml.nodes('//ns:Category[ns:DisplayName="Aggregate Functions"]')
AS Category(Name)
CROSS APPLY Category.Name.nodes('ns:Objects/ns:Function') [Function](Name)
BULK語句後,您應該給你的文件夾(差異主要是Program Files「和」Program_Files(x86)「和SQL服務器版本(例如100是2008)
0
沒有什麼是完全的,因爲它不是JDBC規範的一部分。如果你不知道你在運行時使用了什麼數據庫引擎,最好的辦法是向數據庫提交一個測試查詢,並在使用任何可能不被支持的聚合函數之前檢查它是否失敗。
相關問題
- 1. SQL集合函數獲取列表
- 2. 表列函數混合列
- 3. 集合函數
- 4. 集合函數
- 5. 函數集合中的函數聚合
- 6. 和集合函數
- 7. TeraData集合函數
- 8. DB2集合函數
- 9. 列表和集合
- 10. Python列表集合
- 11. XPATH表達式和Saxon集合()函數
- 12. 將集合分解成集合列表
- 13. 在jQuery對象集合上使用underscore.js列表函數
- 14. 列表框的列表框綁定到集合的集合
- 15. 將數據庫導入列表集合
- 16. 如何從集合列表中找到最大集合或超集合(最大集合不是集合中列表中的另一集合的集合)
- 17. SQL查詢來選擇與非集合值表達和聚集函數列
- 18. 多個集合函數
- 19. 不同的集合函數
- 20. 集合函數錯誤
- 21. 多個集合函數
- 22. Postgresql - 窗口函數集合
- 23. JDBC結果集合函數
- 24. Cassandra集合函數「first_row」
- 25. 關於集合函數
- 26. SQL集合函數幫助
- 27. LINQ到SQL集合函數
- 28. 列表框SelectedItem與列表集合
- 29. hclust函數的集羣列表
- 30. TypeScript通用集合:列表
非常感謝大家,我的應用程序需要發佈底層dbms支持的聚合函數列表。我正在尋找這樣的sql-server,oracle,sybase和mysql的方法。它不是JDBC規範的一部分,所以我正在尋找這些dbs的個別查詢。最後一個選項是將這個列表保存在所有dbs的配置文件中。 – 2011-06-01 07:11:32