我正在使用我沒有文檔的第三方API。有一種方法需要一個SQL字符串並返回一個結果集。基於有效的SQL語法,我想確定SQL DBMS供應商,產品和版本。從方言SQL語法中識別DBMS?
語法像預期的那樣有效SELECT
查詢的一部分的作品:
CASE WHEN 1 = 1 THEN 1 ELSE 0 END
CAST('Catatonic' AS CHAR(3))
GETDATE()
CONVERT(VARCHAR(10), GETDATE(), 101))
SELECT TOP 1 valid_column FROM ValidTable
語法,導致語法錯誤:
COALESCE(NULL, 'Dog')
ISNULL(NULL, 'Dog')
CURRENT_TIMESTAMP
SELECT @@VERSION
SELECT version()
- 發言
;
終止(儘管這可能是一個API的東西)
要嘗試的任何其他SQL語法?
不能用於nitpicky sql語法,只需在系統上拋出'big'dbms版本化查詢,就像'select @@ version',例如mysql:'select version()'。如果你打算在db上拋出隨機查詢,並期望它們中的大部分失敗,那麼至少會拋出有用的查詢來直接回答問題。 –
CONVERT函數和SELECT TOP 1符號很有趣 - 不完全標準。 COALESCE是標準SQL(如ISO 9075); ISNULL是非標準的但常見的。 CURRENT_TIMESTAMP是標準SQL。 @@ VERSION強烈地表示 - 我相信MS SQL Server和Sybase使用這種表示法,我不知道其他使用它的系統(這與其他系統不一樣)。 –
這是一個很難......你不能問第三方客戶支持嗎?第一個列表中的所有內容都可以與任何支持的sql server版本一起使用,也可以在第二個列表中的所有內容中使用 –