問題タブ [sql-like]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - LIKE を使用した Oracle でのアクセントと大文字と小文字を区別しない照合
私はこの答えが役に立つことを発見しました: Accent and case insensitive COLLATE equals in Oracleですが、私の質問は、バージョン 9 の Oracle db での LIKE 検索に関するものです。
私は次のようなクエリを試しました:
しかし、結果は返されません。
テスト用に小さな Java ファイルを作成しました。
私はグーグルで成功していません。誰か解決策がありますか?
名前の一部で検索を実行し、大文字と小文字とアクセントを区別しないで一致する結果を返したいと考えています。
sql - 値としてワイルドカード(%)のみを使用したSQLLIKEパフォーマンス
where句がまったくない場合と比較して、値としてLIKEキーワードとワイルドカードを使用すると、クエリのパフォーマンスはどのようになるのでしょうか。
「WHEREALIKE'%'」などのwhere句について考えてみます。これは、列'a'のすべての可能な値と一致します。これは、where句がまったくない場合とどのように比較されますか。
私がこれを尋ねる理由は、ユーザーが検索する値を指定できるいくつかのフィールドがあるアプリケーションがあるからです。場合によっては、ユーザーは考えられるすべての結果を望んでいます。私は現在、次のような単一のクエリを使用しています。
'%'および'%'の値は、aおよびまたはbのすべての可能な値に一致するように指定できます。これは、アプリケーションで単一の名前付きクエリを使用できるので便利です。このためのパフォーマンスの考慮事項は何でしょうか。クエリオプティマイザは、LIKE'%'を単純にすべてに一致するように減らしますか?名前付きクエリ(プリペアドステートメント)を使用しているため、回答にも影響する可能性があることに気付きました。答えはおそらくデータベース固有であると思います。つまり、これはOracle、MS SQL Server、およびDerbyでどのように機能するのでしょうか。
これに対する別のアプローチは、ワイルドカードを入力するユーザーに基づいて3つの別々のクエリを使用することです。
Aはワイルドカードクエリです。
Bはワイルドカードクエリです。
AとBはワイルドカードです。
ワイルドカードなし:
明らかに、単一のクエリを持つことは、維持するのが最も簡単で簡単です。それでもパフォーマンスが良好な場合は、1つのクエリのみを使用します。
sql-server - SQL Serverの日時LIKEselect?
MySQLで
SQL Serverの構文は何ですか?
sql - SQL Not Like ステートメントが機能しない
ストアド プロシージャ内に次のコードがあります。
NOT LIKE ステートメントは機能していません。誰かが何かを言う前に、CORE を含まない COMMENT 列のアイテムがあり、他のすべての列は問題ありません。
これの何が悪いのか誰か知っていますか?
sql-server - SQL Server Select Where値LIKE(一時テーブル値)
SQL Server 2008に、文字列'A、B、C、D'を受け取り、それを分割して値のテーブルを作成する関数があります。
ここで、列の値が上記のテーブルの行(名前)の1つに似ているテーブル(ユーザー)を検索します。
これが私がやりたいことです:
上記が不可能な場合、他にどのようにそれを行いますか?ある種のループ?
SQLServer2008を使用しています
sql - インデックス番号列で「like」を使用するOracleクエリ、パフォーマンスの低下
クエリ 1 では、id がインデックス付きの列であるにもかかわらず、フル テーブル スキャンが実行されています。クエリ 2 は同じ結果を達成しますが、はるかに高速です。クエリ 1 を実行してインデックス付きの列を返す場合、クエリはすぐに返されますが、インデックスのない列が返されるか、行全体が返される場合は、クエリに時間がかかります。
クエリ 3 では高速に実行されますが、列 'code' は NUMBER(12) ではなく VARCHAR2(10) であり、'id' と同じ方法でインデックスが作成されます。
クエリ 1 がインデックスを使用する必要があることを認識しないのはなぜですか? インデックス付きの数値列をより速く実行できるようにするために変更する必要があるものはありますか?
【クエリ1】
Explain Plan
SELECT STATEMENT ALL_ROWS
コスト: 67 バイト: 2,592 カーディナリティ: 4
2 COUNT STOPKEY
1 TABLE ACCESS FULL TABLE people
コスト: 67 バイト: 3,240 カーディナリティ: 5
【クエリ2】
Explain Plan
SELECT STATEMENT ALL_ROWS
コスト: 11 バイト: 2,620 カーディナリティ: 4
5 COUNT STOPKEY
4 TABLE ACCESS BY INDEX ROWID TABLE people
コスト: 3 バイト: 648 カーディナリティ: 1
3 NESTED LOOPS
コスト: 11 バイト: 2,620 カーディナリティ: 4
1 INDEX FAST FULL SCAN INDEX people_IDX3
コスト: 2 バイト: 54,796 カーディナリティ: 7,828
2 INDEX RANGE SCAN INDEX people_IDX3
コスト: 2 カーディナリティ: 1
【クエリ3】
Explain Plan
SELECT STATEMENT ALL_ROWS
コスト: 6 バイト: 1,296 カーディナリティ: 2
3 COUNT STOPKEY
2 TABLE ACCESS BY INDEX ROWID TABLE people
コスト: 6 バイト: 1,296 カーディナリティ: 2
1 INDEX RANGE SCAN INDEX people_IDX4
コスト: 3 カーディナリティ: 2
sql - Progress DB SQL の LIKE 演算子
私は進行中のSQLでこのようなことをしようとしています(これはPOSTGRESではありません!)
ただし、Progress は LIKE 演算子をサポートしていません。INSTR
それは仕事をするかもしれないように見えますが、それはプログレス拡張機能であり、私が使用しているDBではサポートされていません. 標準の ODBC 関数を使用してこれを達成する別の方法はありますか?
ありがとう
sqlite - sqlite で LIKE 大文字と小文字の区別を使用する便利な方法
ご覧のとおり、PRAGMA case_sensitive_like=ON に切り替えると、LIKE 演算子はクエリを最適化できます。私が測定したところ、実際に機能し、クエリ「LIKE someth%」は、比較的大きなバイナリ インデックス テーブルで 10 倍速くなりました。しかし、問題は、私のライブラリがアプリケーションへのアドオンとして実装されていることです。それは、接続されている任意のデータベースで独自のテーブルを維持します。だから問題は
- case_sensitive_likeは、読み取りではなく設定のみがサポートされているため、読み取ることができません。そのため、一時的に状態を読み取ってクエリの後に返すことができず、
- データベースの主な機能に従う必要があるアドオンとして、他のルーチンに影響を与える可能性があるため、必要に応じて設定を変更しないでください。
- 私が見たように、optimizid クエリを直接呼び出すための Like(大文字と小文字を区別する) 内部同等物はありません。たとえば、LIKE の代わりに LIKECASESENSITIVE を使用します。
- sqlite3_create_function を呼び出すことはできますが、内部で LIKE(CASE SENSITIVE) を呼び出すことができるかどうかはわかりません。
c# - メモリに格納されたデータセットの「Like」関数 (SQL の like 関数と同じ)
大規模なデータセットがあり、データセットで "like" 関数を実行したいとします。たとえば、列 - 名前
データセットで like ステートメントを実行する方法はありますか?
ASP.NET で可能ですか?
データベースに対してクエリを実行したくありません。
sql - SQLクエリ、ワイルドカードとしてWHEREを使用できますか?
SQLクエリでWHEREをワイルドカードとして使用することは可能ですか?
私はこの簡単なクエリを持っています:
変数qが「JohnDoe」に等しいとしましょう。次に、クエリで名と/または(??)姓の両方でqを検索します。
私はそれを理解することができます。
どうもありがとう/Andreas
編集/更新:
私は私の質問を単純化しようとします。
ID、Firstname、Lastname、Emailの各フィールドを持つdb-tableがあるとします。(値が5のfx:john、Doe、JD @ hotmail.com)
次に、訪問者が上記のフィールドのいずれかを検索できるページに、検索フィールド(送信ボタンを使用した1つの単純なテキスト入力)を含む単純なhtmlフォームがあります。
彼/彼女が「John」、「Doe」、または「hotmail」という単語を検索する場合、次のように私のASPページで変数「q」として検索文字列を取得するSQLクエリで完全に機能します。
さて、私の質問は、訪問者が「John Doe」と入力した場合、どうすればよいですか?
「JohnDoe」という名前のデータベース内のすべての人のリストを取得できるようにしたい