
うまく表現ができないのですが、
指定した文字列をワイルドカードで検索できる最大の値を検索したいと思っています。
こんなことはSQLを使って効率的に行う方法は無いでしょうか?
例)
M1
M2
P
P2
P22
P23
P233
P2345
と並んでいる表に対し、条件として、P2342と入れた時に、P23の行を検索したい訳です。
(P,P2,P23もP2342に含まれるが、その中で最も大きな値)
select * from mydata where key1 > 'P2342' order by key1 desc
として、逆読みして完全部分一致するレコードが見つかるまで、見つからない場合は、
対象より1文字も合致しないレコードに至るまで、探すしか方法は無いものでしょうか?
No.2ベストアンサー
- 回答日時:
下記のSQLでどうでしょうか。
select top 1 * from mydata where 'P2342' Like key1 & "*" order by key1 desc;
この回答への補足
ちょっと書き直したら、出来ました。
select * from mydata where 'P2342' Like trim(key1)||'%' order by key1 desc
fetch first 1 rows only
SQLってこんなことが出来るんですね。勉強になりました。
どうも有難うございます。
コメント有難うございます。
使っているsql(DB2/UDB)ではエラーになりますので、
select * from mydata where 'P2342' Like key1||'%' order by key1 desc
fetch first 1 rows only
と置き換えてみましたが、エラーは出ないものの、1件も合致しません。
ちょっと意味が違うんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
単一グループのグループ関数で...
-
トランザクションログを出力せ...
-
SQLで条件にヒットしたレコード...
-
アクセスのレポートでレコード...
-
引数によってwhere句を切り替え...
-
データ
-
SQL*Loader Append
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
group byの並び順を変えるだけ...
-
oracle DB内のデータを増幅す...
-
トリガからプロシージャのコー...
-
SELECT FOR UPDATE で該当レコ...
-
updateで複数行更新したい
-
あるカラムに同じ値を持つレコ...
-
Oracleですがsqlで質問です。 ...
-
1レコード全てを改行なしで表...
-
Oracle10gからkeySQLで集計データ
-
AccessのSQL文で1件のみヒット...
-
デフォルトでデータが表示され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
データ
-
SQL*Loader Append
-
AccessのSQL文で1件のみヒット...
-
引数によってwhere句を切り替え...
-
トランザクションログを出力せ...
-
updateで複数行更新したい
-
アクセスのレポートでレコード...
-
group byの並び順を変えるだけ...
-
「数字で始まらない」ものを抽...
-
osqleditについて
-
SQLで条件にヒットしたレコード...
-
デフォルトでデータが表示され...
-
BLOB型項目をSQLの検索条件に指...
-
1レコード全てを改行なしで表...
-
トリガからプロシージャのコー...
-
PL/SQLでフェッチでNULLの項目...
おすすめ情報