- - PR -
SELECT文での条件検索
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-06-08 11:18
はじめましてよろしくお願いします。
早速質問させていただきます。 下記参照してください。 SELECT レセプトコード 記号 番号 受診者氏名 FROM レセプト レセプトコードの左から3桁目までを使って検索を行いたいのです。 例:レセプトコード=1234 レセプトコードの左から3桁目が123になっているものを全て抽出 WHEREの条件は頭に浮かんでるのですが?左から3桁目を切り取るがわからない状況です。 よろしくお願いします。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-06-08 11:20 ] |
|
投稿日時: 2005-06-08 11:28
使用されているDBMSはなんでしょうか?
DBMSによって関数が異なるので記述してください。 で、パターンとしては ・レセプトコード like '123%' で左3桁のパターンマッチング ・substr(レセプトコード,1,3) = '123' でレセプトコード列の値を3桁にしてマッチング の2パターンがあります。 (substrはOracleの関数です。SQLServerだったらLEFTとかSUBSTRINGだった気がします。) 私としてはlikeでのパターンマッチングでインデクスを有効活用することを お勧めします。 |
|
投稿日時: 2005-06-08 11:35
こんにちは。
SQLはDBMS毎に方言があるので使用しているDBMSを書いた方が良いかと。 私はOracle以外は疎いのでOracle前提で。 WHERE レセプトコード LIKE '123%' WHERE SUBSTR(レセプトコード, 1,3) = '123' のどちらでもいけると思います。 |
|
投稿日時: 2005-06-08 11:45
すみませんOracleDBでした。
以後気をつけます。 無事解決できました。 ありがとうございました。 |
|
投稿日時: 2005-06-08 18:16
OracleDBの場合、キー項目に対して演算を施した条件の場合はindexが使用されません。
コード設計にまで遡る必要がある話ですが、そこまで戻れないのであれば 実装はLike指定にて行う必要があると思います。 |
1