[發明專利]非標準SQL語句的內外連接的轉化方法和轉化裝置有效
| 申請號: | 201611071273.0 | 申請日: | 2016-11-29 |
| 公開(公告)號: | CN106708954B | 公開(公告)日: | 2020-03-10 |
| 發明(設計)人: | 楊永亮 | 申請(專利權)人: | 北京華勝信泰數據技術有限公司;華勝信泰信息產業發展有限公司 |
| 主分類號: | G06F16/2452 | 分類號: | G06F16/2452 |
| 代理公司: | 北京友聯知識產權代理事務所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
| 地址: | 100192 北京市海淀區學*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 非標準 sql 語句 內外 連接 轉化 方法 裝置 | ||
本發明提出了一種非標準SQL語句的內外連接的轉化方法和轉化裝置,其中,該轉化方法包括:在非標準SQL語句的語法解析樹中的過濾條件樹中,查找出所有的第一類型表達式和所有的第二類型表達式;為每個所述第二類型表達式生成連接狀態樹節點;將所有的所述連接狀態樹節點進行合并,得到連接狀態樹;將每個所述第一類型表達式鏈接到所述連接狀態樹上的所述連接狀態樹節點的屬性中;根據鏈接有所述第一類型表達式的連接狀態樹,對所述語法解析樹進行修改,以將所述非標準SQL語句的內連接轉化成外連接。通過本發明的技術方案,將非標準SQL語句的內連接轉化成與其等價的外連接,以保證數據庫移植后查詢語句的正確性。
技術領域
本發明涉及數據庫技術領域,具體而言,涉及一種非標準SQL語句的內外連接的轉化方法和一種非標準SQL語句的內外連接的轉化裝置。
背景技術
在數據庫移植過程中,有些用戶使用了非ANSI(American National StandardsInstitute,美國國家標準協會)標準語法編寫了SQL(Structured Query Language,結構化查詢語言)語句,下面將使用非ANSI標準語法編寫的SQL語句稱為非標準SQL語句。由于年代久遠,用戶無法再次對非標準SQL語句進行修改編譯,這就要求后來數據庫能夠兼容被移植數據庫的語法。
在Oracle數據庫中支持一種特殊的外連接語法,例如:Select*from a,b wherea.c1=b.c1(+);其中(+)是Oracle新增的關鍵字,c1是表的列,b是被(+)修飾的表,a是未被(+)修飾的表,a.c1=b.c1(+)用來表示a表left join b表,連接條件是a.c1=b.c1,就是以外連接的方式查找出所有表a的c1列等于表b的c1列的行。若用戶使用了以上的非標準SQL語句對表進行外連接查詢,則當數據庫需要移植時,由于應用程序中的非標準SQL語句不能被修改,所以新數據庫需要兼容Oracle的這種非標準語法。如果不進行兼容性修改,那么數據庫移植后,原有的應用程序將無法正確運行。上面的例子如果忽略掉(+)關鍵字,按照SQL標準語法,此非標準SQL語句會解析為內連接。但是在Oracle中,此非標準SQL語句會被解析成外連接。
因此,如何將非標準SQL語句的內連接轉化成與其等價的外連接,從而保證數據庫移植后查詢語句的正確性成為亟待解決的技術問題。
發明內容
本發明旨在至少解決現有技術或相關技術中存在的技術問題之一。
為此,本發明的一個目的在于提出了一種非標準SQL語句的內外連接的轉化方法。
本發明的另一個目的在于提出了一種非標準SQL語句的內外連接的轉化裝置。
為實現上述至少一個目的,根據本發明的第一方面的實施例,提出了一種非標準SQL語句的內外連接的轉化方法,包括:在非標準SQL語句的語法解析樹中的過濾條件樹中,查找出所有的第一類型表達式和所有的第二類型表達式,其中,所述第一類型表達式僅包括一個被預設關鍵字修飾的表,所述第二類型表達式僅包括一個被預設關鍵字修飾的表和一個未被所述預設關鍵字修飾的表;為每個所述第二類型表達式生成連接狀態樹節點;將所有的所述連接狀態樹節點進行合并,得到連接狀態樹;將每個所述第一類型表達式鏈接到所述連接狀態樹上的所述連接狀態樹節點的屬性中;根據鏈接有所述第一類型表達式的連接狀態樹,對所述語法解析樹進行修改,以將所述非標準SQL語句的內連接(Inner join)轉化成外連接(Outer join)。
在該技術方案中,通過生成能夠描述非標準SQL語句的語法解析樹中的表與表之間的外連接關系的連接狀態樹,以根據該連接狀態樹,將非標準SQL語句的內連接轉化成與其等價的外連接,從而保證數據庫移植后查詢語句的正確性。另外,本方案既不會影響原有的語法解析流程,也不會對優化器造成任何影響,而且在實施本方案時,不會對數據庫執行流程做過多的修改,減小了新功能開發的風險。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京華勝信泰數據技術有限公司;華勝信泰信息產業發展有限公司,未經北京華勝信泰數據技術有限公司;華勝信泰信息產業發展有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611071273.0/2.html,轉載請聲明來源鉆瓜專利網。





