検索

ホームページ  >  に質問  >  本文

多数の行をクエリする場合の LIKE 演算子の代替手段は何ですか?

<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粉191610580P粉191610580467日前494

全員に返信(1)返信します

  • P粉063862561

    P粉0638625612023-09-03 00:00:31

    「アスタリスクは常に最後にある」と述べたので、 を試してください。

    ここで、example_id は '%*'

    のようになります。 これにより、「*」で終わる値が検索されます

    ######または######

    は、テーブルの列内の部分文字列を検索します。

    これを実現する 1 つの方法は、3 つのパラメーターを取る instr() 関数を使用することです。

    構文

    : instr(rank, string, sub_string)

    ######ランキング###:###

    最初の対応する位置を与える整数式 部分文字列の検索は、文字列内の文字から始まります。

    String: 文字列はテキストです。

    sub_string: 探している部分文字列 探している。 instr() が見つからない場合は 0 を返します。 マッチ。

    これをテーブルにどのように適用すればよいでしょうか? instr()関数はx3なので適用は簡単です。

    1. : filter[ZCT] where instr(1,ALLOTEDTO,”Ram”)
    2. 0.
    3. ここで、1 は部分文字列を検索する開始位置、ALLOTEDTO は文字列で構成される列名、最後のパラメータは部分文字列そのものです。これにより、ALLOTEDTO 列に部分文字列「Ram」
    4. が含まれるテーブル内のすべてのレコードが表示されます。
    これはと同等です。

    ALLOTEDTO が "%Ram%" に似ている ZCT から * を選択します。

    注<>: Instr() 関数は大文字と小文字を区別するため、常に大文字または小文字の関数を使用してください。

    返事
    0
  • キャンセル返事