查詢大量行​​時,什麼可以取代 LIKE 運算子?
P粉191610580
P粉191610580 2023-09-02 13:02:15
0
1
479
<p>我有一個表,其中有一列儲存隨機字串,如下所示:</p> <pre class="brush:php;toolbar:false;">example_id = qwhs77gt65g7*</pre> <p>現在該列上的某些資料帶有星號 (*),而其他資料則沒有。 </p> <p>我需要選擇那些有的。我正在使用這個查詢:</p> <pre class="brush:php;toolbar:false;">SELECT example_id FROM example_tbl WHERE example_id LIKE ‘%*%’</pre> <p>現在這通常不是問題,但我正在查詢數百萬行,據我所知,LIKE 運算子正在影響我的效能。完成查詢需要幾個小時</p> <p>我的問題是 LIKE 運算子的替代方案是什麼? </p> <p>PS 星號始終位於字串的末尾。不知道是否有幫助</p>
P粉191610580
P粉191610580

全部回覆(1)
P粉063862561

既然您提到「星號總是在最後」那麼您可以嘗試

其中 example_id LIKE '%*'

這將會找到以「*」結尾的任何值

是在表格的列中搜尋子字串。

實現它的一種方法是使用 instr() 函數,instr() 函數需要 3 個參數。

語法:instr(rank, string, sub_string)

排名

  1. 整數型,給出第一個對應的位置 子字串搜尋開始的字串中的字元。
  2. String:字串是您的文字。
  3. sub_string :您要尋找的子字串 正在找。如果沒有找到 instr(),則傳回 0 匹配。

現在如何將其應用到表中?由於instr()函數是x3,因此應用起來很簡單。

例如:過濾器[ZCT] 其中 instr(1,ALLOTEDTO,”Ram”) 0.

其中1是尋找子字串的起始位置,ALLOTEDTO是由字串組成的列名,最後一個參數是子字串本身。這將為您提供表中 ALLOTEDTO 列包含子字串「Ram」的所有記錄

這相當於。

從 ZCT 中選擇 *,其中 ALLOTEDTO 類似於「%Ram%」。

注意:Instr() 函數區分大小寫,因此請一律使用大寫或小寫函數。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板