小巧、快速、可靠
任選三項
COMPLETION() 表值函數

1. 概觀

COMPLETION 擴充套件實作一個名為「completion」的 表值函數,可用於在互動式 SQL 輸入期間建議部分輸入字詞的完成字串。例如,完成表可用於協助實作 tab 完成。

2. 詳細資料

設計的查詢介面為

SELECT DISTINCT candidate COLLATE nocase
  FROM completion($prefix, $wholeline)
 ORDER BY 1;

上述查詢將傳回以 $prefix 開頭的整個輸入字詞的建議。$wholeline 參數為從行首到插入點的所有文字。$wholeline 參數用於提供內容。

$prefix 參數可以為 NULL,在此情況下,前置詞會從 $wholeline 推斷出來。或者,如果沒有內容資訊或不想要有內容感知的完成,$wholeline 參數可以為 NULL 或省略。

完成表可能會多次傳回相同的候選字串,且會以任意順序傳回候選字串。上述範例查詢中的 DISTINCT 關鍵字和 ORDER BY 會新增,以使答案唯一且處於字典順序。

2.1. 範例用法

完成表用於在 命令列殼層 中實作 tab 完成,並與 readline 或 linenoise 輸入列編輯套件結合使用,適用於 unix。請參閱 https://sqlite.dev.org.tw/src/file/src/shell.c.in 原始檔以取得範例程式碼。搜尋「FROM completion」以找到相關程式碼區段。

由於完成表已內建於命令列殼層中以提供 tab 完成,因此您可以在命令列殼層中直接對完成表執行測試查詢。只要輸入查詢,例如上述範例所示,填入 $prefix 和 $wholeline 的適當值,並觀察輸出即可。

3. 限制

完成表是設計用於互動使用。它將以適合人類輸入的速度傳回答案。只要在使用者介面中回應時間幾乎是即時的,就不會做出特別有效率的努力。

截至撰寫本文時 (2017-07-13),完成虛擬表只會尋找 SQL 關鍵字、架構、表格和欄位名稱。$wholeline 中包含的內容會被完全忽略。未來的增強功能將嘗試傳回從函數和 pragma 名稱以及其他來源取得的新完成,並考慮更多內容。完成表應被視為進行中的工作。

此頁面最後修改於 2022-01-08 05:02:57 UTC