Was ist eine Alternative zum LIKE-Operator bei der Abfrage einer großen Anzahl von Zeilen?
P粉191610580
P粉191610580 2023-09-02 13:02:15
0
1
463
<p>Ich habe eine Tabelle mit einer Spalte, die zufällige Zeichenfolgen wie diese speichert: </p> <pre class="brush:php;toolbar:false;">example_id = qwhs77gt65g7*</pre> <p>Einige Daten in der Spalte haben jetzt ein Sternchen (*), andere Daten jedoch nicht. </p> <p>Ich muss diejenigen auswählen, die es sind. Ich verwende diese Abfrage: </p> <pre class="brush:php;toolbar:false;">SELECT example_id FROM example_tbl WHERE example_id LIKE ‘%*%’</pre> <p>Normalerweise wäre das kein Problem, aber ich frage Millionen von Zeilen ab und soweit ich weiß, beeinträchtigt der LIKE-Operator meine Leistung. Die Abfrage wird mehrere Stunden dauern</p> <p>Meine Frage ist, was ist die Alternative zum LIKE-Operator? </p> <p>PS Das Sternchen steht immer am Ende der Zeichenfolge. Ich bin mir nicht sicher, ob das hilft</p>
P粉191610580
P粉191610580

Antworte allen(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() 函数区分大小写,因此请始终使用大写或小写函数。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!