オラクルのファジー・クエリーとその使い方
2022-01-08 17:20:35
オラクルファジークエリーの使用例
I. where節でのlikeキーワードの使用
where節でlikeキーワードを使用してOracleファジー・クエリの効果を得ることができる。where節では、datetime、char、varcharフィールドタイプのカラムに対してワイルドカードを使用してlikeキーワードを使用し、ファジー・クエリを実現することができる。
以下のワイルドカードを使用することができます。
- % : 0文字以上、3つのケースで % を使用します。
- キーワード%」のようなフィールドには、"キーワード"レコードが含まれます。
- キーワード'のようなフィールドが"Keyword"で始まるレコード。
- キーワード'のようなフィールドを持つレコードは、"Keyword".で終わります。
例
SELECT * FROM [user] WHERE uname LIKE '%three%'
// search results: "Zhang San", "Xiao San", "three-legged cat", "cat three-legged" with Find all the records with "three".
SELECT * FROM [user] WHERE uname LIKE '%three' (match from the back)
//search results: "Zhang San", "Xiao San"
// Also, if you need to find a record with both "three" and "cat" in uname, use the and condition
SELECT *FROM [user] WHERE uname LIKE '%three%' AND uname LIKE '%cat%'
If you use SELECT * FROM [user] WHERE uname LIKE '%three%cat%'// you can search for "three-legged cat", but not "cat three-legged".
1._
式文の文字数を制限するために、any文字(アンダースコア)1文字がよく使われます。
例
SELECT * FROM [user] WHERE uname LIKE 'three'
// search result: "cat three feet" such that uname is three characters and the middle one is "three".
SELECT * FROM [user] WHERE uname LIKE 'three__';
//search results: "three-legged cat" where uname is three characters and the first one is "three".
2.[]
括弧内に記載された文字のいずれかを表す範囲の文字(正規表現に似ている)。マッチしたオブジェクトがそのいずれかになることを要求する文字、文字列、または範囲を指定する。
例
SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
//search results: "Zhang San", "Li San", "Wang San" (instead of "Zhang Li Wang San").
// if [ ] has a series of characters (01234, abcde, etc.) can be abbreviated to "0-4", "a-e"
SELECT * FROM [user] WHERE u_name LIKE 'old [1-9]'
// search results: "old 1", "old 2", ......, "old 9".
3.[^]
範囲外の文字、使い方は[ ]の反対です。
次に、str(strSource,strTarget)関数は、Oracleで提供されている
instr(strSource,strTarget) 関数は Oracle で提供されており、'%Keyword%' パターンを使用するよりもはるかに効率的である。
また、instr関数には3つのケースがあります。
- instr(field,'keyword')>0 は '%keyword%' のようなフィールドと同等です。
- instr(field,'keyword')=1 は '%Keyword' のようなフィールドと同等です。
- instr(field,'keyword')=0 は、'%keyword%' のようでないフィールドと同等です。
例
SELECT * FROM [user] WHEREinstr(uname ,'three')>0
使い方は、上のLikeを参考に
特別な使い方
select id, namefrom user where instr('101914, 104703', id) > 0;
と同等です。
select id, namefrom user where id = 101914 or id = 104703;
以上、オラクルのファジー・クエリのwhere句の使い方を詳しく説明しましたが、オラクルのファジー・クエリの使い方については、Scripting Houseの他の関連記事にもご注目ください。
関連
-
Oracle Databaseの失敗したオブジェクトの処理の詳細
-
sqlplusコマンドによるOracleデータベースへのさまざまなログイン方法
-
PLSQLDeveloper14を使用したOracle11gへの接続手順を詳しく伝授
-
Oracle 11gのダウンロード、インストール、グラフィックチュートリアルを使用します。
-
[解決済み] Oracleのテーブル名の最大長は?
-
[解決済み] ORA-01950: テーブルスペース 'USERS' に特権がありません [閉鎖]。
-
[解決済み] ORA-00980 PLSQL で同義語の翻訳が有効でなくなった。
-
[解決済み] PLS-00103:次のいずれかを期待しているときに、記号"; "に遭遇しました。
-
[解決済み] オラクル ユーザーデータでConnect By Loop
-
[解決済み] ORA-01830: 入力文字列全体を変換する前に日付書式画像が終了する / Select sum where date query
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PLSQLは、ローカルオラクルまたはリモートオラクルデータベースに接続し、ランダムスイッチ機能を実現します。
-
Oracle Sqlplusコマンドログイン複数方法ケーススタディ
-
オラクルはADGとDGのケースを詳細に区別している
-
Oracle12Cのデフォルトのユーザー名とシステムパスワードが正しくない場合の解決策
-
オラクルストアドプロシージャの事例を解説
-
Oracle TriggersとCursorsを高速に学ぶ
-
[解決済み] Oracle の起動ができません - ORA-00845: MEMORY_TARGET はこのシステムでサポートされていません - しかし、メモリサイズは問題ないようです。
-
[解決済み] ORA-29283: 無効なファイル操作 ORA-06512: "SYS.UTL_FILE", 行 536 で。
-
[解決済み] PL/SQLプロシージャ - SQLステートメント無視エラー
-
[解決済み] このPL/SQLは何が問題なのでしょうか?バインド変数 * が DECLARED ではありません。