首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL LIKE 查詢實現遞歸前綴匹配:從單字元到多字元逐步篩選

     編輯:程式設計疑難解答

業務場景

輸入框逐字輸入:輸入「3」查 ID 為 3、30000~39999;再輸入「2」查 32000~32999,以此類推。

解決方案:動態構建 LIKE 模式

-- 累積輸入字串
DECLARE @prefix VARCHAR(10) = '3';  -- 第一次輸入
-- SELECT * FROM table WHERE id LIKE @prefix + '%';  -- 匹配 3, 30..., 31...

SET @prefix = '32';  -- 第二次輸入
-- SELECT * FROM table WHERE id LIKE @prefix + '%';  -- 匹配 32, 320..., 321...

應用層實現要點

  1. 前端維護一個 searchPrefix 變數,每次輸入追加字元。
  2. 後端接收參數,執行 WHERE id LIKE @prefix + '%' (字串型 ID) 或 WHERE CAST(id AS VARCHAR) LIKE @prefix + '%' (數值型 ID)。
  3. 為避免全表掃描,ID 欄位應建立索引,且 LIKE 'prefix%' 可用索引 (SARGable)。

進階優化

  • 若 ID 為數值型且固定長度 (如 5 碼),可用範圍查詢替代 LIKE:
    WHERE id BETWEEN 32000 AND 32999 (由前綴計算邊界),效能更優。
  • 大數據量下考慮 Trie 樹 (前綴樹) 或全文檢索引擎 (Elasticsearch)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved