成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

怎樣寫出可以在各個數(shù)據(jù)庫中都能執(zhí)行的SQL?

數(shù)據(jù)庫 SQL Server
不同類型數(shù)據(jù)庫的函數(shù)語法或多或少存在差異,要想讓功能相同的 SQL 查詢語句在不同類型的數(shù)據(jù)庫中都能被順利執(zhí)行,就要把各數(shù)據(jù)庫都有的那些差異化函數(shù)語法進行翻譯。

 不同類型數(shù)據(jù)庫的函數(shù)語法或多或少存在差異,要想讓功能相同的 SQL 查詢語句在不同類型的數(shù)據(jù)庫中都能被順利執(zhí)行,就要把各數(shù)據(jù)庫都有的那些差異化函數(shù)語法進行翻譯。

[[442121]]

使用 ORM 技術能夠將程序員書寫的查詢轉換成不同數(shù)據(jù)庫的 SQL,相當于有一定的移植能力。但 ORM 技術只適合應對 OLTP 場景下的簡單 SQL,難以實現(xiàn) OLAP 場景下較復雜 SQL 的移植,例如,使用了 ORM 技術中不直接支持的函數(shù),或者遇到 FROM 中包含子查詢的復雜 SQL。

集算器 SPL 設計了一套標準的 SQL 查詢語法,該語法內(nèi)置大量函數(shù)(還在持續(xù)追加中),可描述更多常運算。SPL 中有一個 sqltranslate 函數(shù),可以把這種標準 SQL 翻譯成不同數(shù)據(jù)庫的 SQL,實現(xiàn)數(shù)據(jù)庫的遷移。

比如這樣的標準 SQL:

 

  1. SELECT CLIENT, YEAR(ORDERDATE), SUM(AMOUNT) 
  2.             , COUNT(ORDERID) 
  3. FROM ORDERS 
  4. GROUP BY CLIENT, YEAR(ORDERDATE) 
  5. HAVING SUM(AMOUNT) > 2000 

 

用.sqltranlate(“MYSQL”) 翻譯后就得到:

 

  1. SELECT CLIENT, YEAR(ORDERDATE), SUM(AMOUNT) 
  2.             , COUNT(ORDERID) 
  3. FROM ORDERS 
  4. GROUP BY CLIENT, YEAR(ORDERDATE) 
  5. HAVING SUM(AMOUNT) > 2000 

 

而如果使用.sqltranslate(“ORACLE”) 將返回:

 

  1. SELECT CLIENT, EXTRACT(YEAR FROM ORDERDATE), SUM(AMOUNT) 
  2.             , COUNT(ORDERID) 
  3. FROM ORDERS 
  4. GROUP BY CLIENT, EXTRACT(YEAR FROM ORDERDATE) 
  5. HAVING SUM(AMOUNT) > 2000 

 

可以看到,標準函數(shù)能夠正確地根據(jù)數(shù)據(jù)庫選擇相應的函數(shù)。

SPL 實現(xiàn) SQL 移植,采取的策略是只對標準 SQL 中的函數(shù)進行翻譯,不翻譯(原樣照抄)語句,從而使標準 SQL 可描述更多的運算。比如,對于下面的子查詢無論翻譯成哪種數(shù)據(jù)庫 SQL 都不會變,也都可以正常執(zhí)行。

 

  1. SELECT 
  2.     ORDERID, 
  3.     M 
  4. FROM 
  5.     ( 
  6.     SELECT 
  7.         ORDERID, 
  8.         MONTH(ORDERDATE) M 
  9.     FROM 
  10.         ORDERS) T1 

 

集算器 SPL 是 Java 寫的開源軟件,很容易被 JAVA 應用 集成而使用這個 SQL 移植的功能,在應用程序中如果需要翻譯 SQL 語句,可以直接調用 api 方法:

 

  1. String sql = “SELECT CLIENT, YEAR(ORDERDATE), SUM(AMOUNT) , COUNT(ORDERID) FROM ORDERS GROUP BY CLIENT, YEAR(ORDERDATE) HAVING SUM(AMOUNT) > 2000”;  
  2. sql = com.raqsoft.dm.sql.SQLUtil.translate(sql, “ORACLE”); 

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2021-12-22 23:58:16

SQL數(shù)據(jù)庫語法

2021-04-01 16:43:05

代碼可讀性開發(fā)

2011-06-03 10:31:14

SQL

2021-01-08 07:38:15

代碼功能調用

2011-04-01 14:34:31

SQL Server數(shù)嵌套子查詢

2011-06-13 14:05:58

描述標簽

2011-03-17 17:27:48

Sybase數(shù)據(jù)庫引擎

2010-06-30 13:19:17

SQL Server

2023-10-29 17:15:57

2010-04-19 10:00:02

Oracle SQL

2020-08-26 14:45:34

SQL數(shù)據(jù)庫數(shù)次

2022-07-08 10:09:47

SPLSQL數(shù)據(jù)庫

2011-08-03 14:50:26

SQL Server數(shù)Visual Stud.MDF數(shù)據(jù)庫文件

2009-04-30 09:28:05

SynonymOpenquerySQL Server

2020-10-09 15:39:57

數(shù)據(jù)庫工具技術

2011-07-29 09:20:23

Oracle數(shù)據(jù)庫定時器Job

2011-04-01 14:51:37

Oracle數(shù)據(jù)庫導入導出

2011-04-01 14:51:37

Oracle數(shù)據(jù)庫導入導出

2010-09-07 15:20:58

SQL語句事務

2011-03-28 12:33:09

SQL Server數(shù)據(jù)庫鏈接
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频久久 | 久草新在线 | 国产在线中文字幕 | 欧美日韩精品一区二区三区蜜桃 | 久久久精品网 | 综合九九| 日韩av在线一区二区三区 | 欧美日产国产成人免费图片 | 亚洲成人一区二区 | 亚洲精品字幕 | 91免费高清视频 | 中文字幕亚洲精品在线观看 | 黄色免费观看 | 亚洲美女一区二区三区 | 性色av一区 | 国产成人高清在线观看 | 日日夜夜精品视频 | 免费一级欧美在线观看视频 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 国产成人免费在线观看 | 精品免费国产视频 | 国产精品久久久久一区二区三区 | 中文成人在线 | 久久精品国产一区二区电影 | 国产一区二区三区四区 | 日韩欧美视频在线 | 久久综合香蕉 | 91天堂| 欧洲成人免费视频 | 成年人免费看 | 国产精品自拍av | 亚洲国产aⅴ精品 | 亚洲午夜网 | 尤物在线视频 | 亚洲精品在线免费看 | 一级片av| 国产偷自视频区视频 | 欧美日韩在线播放 | 亚洲顶级毛片 | 精品欧美一区二区在线观看欧美熟 | 成人午夜影院 |