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

怎樣寫出可以在各個數據庫中都能執行的SQL?

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

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

[[441663]]

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

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

比如這樣的標準 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 

 

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

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

 

  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-26 23:06:14

SQL數據庫程序員

2021-04-01 16:43:05

代碼可讀性開發

2011-06-03 10:31:14

SQL

2021-01-08 07:38:15

代碼功能調用

2011-06-13 14:05:58

描述標簽

2011-04-01 14:34:31

SQL Server數嵌套子查詢

2011-03-17 17:27:48

Sybase數據庫引擎

2010-04-19 10:00:02

Oracle SQL

2023-10-29 17:15:57

2010-06-30 13:19:17

SQL Server

2020-08-26 14:45:34

SQL數據庫數次

2022-07-08 10:09:47

SPLSQL數據庫

2011-08-03 14:50:26

SQL Server數Visual Stud.MDF數據庫文件

2020-10-09 15:39:57

數據庫工具技術

2011-04-01 14:51:37

Oracle數據庫導入導出

2011-04-01 14:51:37

Oracle數據庫導入導出

2009-04-30 09:28:05

SynonymOpenquerySQL Server

2011-07-29 09:20:23

Oracle數據庫定時器Job

2011-03-28 12:33:09

SQL Server數據庫鏈接

2010-07-06 15:22:00

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区中文字幕 | 亚洲精品一区二区在线观看 | 美女国产 | 国产精品揄拍一区二区久久国内亚洲精 | 国产精品美女 | 国产精品国产a | 91视视频在线观看入口直接观看 | 欧美一区二区在线观看 | www.色午夜.com | 日韩久久综合网 | 久久久久精 | 97色在线观看免费视频 | 久久夜色精品国产 | 久久久区| 毛片在线免费 | 欧美激情亚洲 | 在线观看成人精品 | 日韩视频一区二区三区 | 九九在线| 91免费在线 | 日韩精品av一区二区三区 | 亚洲一区二区欧美 | 午夜噜噜噜 | 国产精品美女久久久久久免费 | 国产午夜精品一区二区三区四区 | 超碰人人在线 | 精品国产欧美一区二区 | 最新国产精品精品视频 | 中文字幕 国产精品 | 久久久久欧美 | 国产成人在线观看免费 | 国产精品一区二区三区久久 | 亚洲每日更新 | 北条麻妃国产九九九精品小说 | av在线天堂网| 日韩欧美成人精品 | 激情欧美日韩一区二区 | 亚洲精品中文字幕av | 97伦理 | 日韩久久久久 | 2018天天干天天操 |