- PR -

SELECT文での条件検索

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/06/08
投稿数: 4
投稿日時: 2005-06-08 11:18
はじめましてよろしくお願いします。
早速質問させていただきます。
下記参照してください。

SELECT
レセプトコード
記号
番号
受診者氏名
FROM
レセプト

レセプトコードの左から3桁目までを使って検索を行いたいのです。
例:レセプトコード=1234
レセプトコードの左から3桁目が123になっているものを全て抽出

WHEREの条件は頭に浮かんでるのですが?左から3桁目を切り取るがわからない状況です。
よろしくお願いします。

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-06-08 11:20 ]
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-06-08 11:28
使用されているDBMSはなんでしょうか?
DBMSによって関数が異なるので記述してください。


で、パターンとしては
・レセプトコード like '123%' で左3桁のパターンマッチング
・substr(レセプトコード,1,3) = '123' でレセプトコード列の値を3桁にしてマッチング
の2パターンがあります。
(substrはOracleの関数です。SQLServerだったらLEFTとかSUBSTRINGだった気がします。)

私としてはlikeでのパターンマッチングでインデクスを有効活用することを
お勧めします。
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-06-08 11:35
こんにちは。

SQLはDBMS毎に方言があるので使用しているDBMSを書いた方が良いかと。
私はOracle以外は疎いのでOracle前提で。

WHERE レセプトコード LIKE '123%'
WHERE SUBSTR(レセプトコード, 1,3) = '123'
のどちらでもいけると思います。
未記入
会議室デビュー日: 2005/06/08
投稿数: 4
投稿日時: 2005-06-08 11:45
すみませんOracleDBでした。
以後気をつけます。

無事解決できました。
ありがとうございました。
ZingBay
常連さん
会議室デビュー日: 2004/02/16
投稿数: 27
お住まい・勤務地: 古の奈良
投稿日時: 2005-06-08 18:16
OracleDBの場合、キー項目に対して演算を施した条件の場合はindexが使用されません。
コード設計にまで遡る必要がある話ですが、そこまで戻れないのであれば
実装はLike指定にて行う必要があると思います。
1

スキルアップ/キャリアアップ(JOB@IT)