- ベストアンサー
SQL文 について教えて下さい
「Access」で下記のように記述するものを「SQL Server」に置き換えた場合、 どのように記述する事になるのでしょうか。 SELECT Max(CLng(mid(TestId,4,10))) AS MAX_pti_patient_id FROM patient_info WHERE TestCd1 = 1 and TestFlg = 1 どなたか分かる方がいましたら教えて下さい。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SELECT Max( cast( SUBSTRING(TestId,4,10) as INT )) AS MAX_pti_patient_id FROM patient_info WHERE TestCd1 = 1 and TestFlg = 1 を試してください。
その他の回答 (2)
- nora1962
- ベストアンサー率60% (431/717)
残念ですがSqlserverにMid関数はありません。 http://wiki.livedoor.jp/uepon2929/d/SQLServer%A4%C7ACCESS%A4%CEMID%B4%D8%BF%F4%A4%CB%C2%E5%A4%EF%A4%EB%A4%E2%A4%CE
お礼
回答ありがとうございます。 あえて書かなかったんですが、SqlserverにはMID関数の変わりにSubStringがあり、そこまでは出来ました。 ただ、clngに変わる物が分からなかったので、質問させて頂きました。
- NetNeko
- ベストアンサー率0% (0/1)
Oracle使いがでしゃばりますw (^^;) 内容を解析するところ、 TestId の 4文字目から10文字を 数値に置き換えたものから 最大の値を取得 取得した項目名は MAX_pti_patient_id 取得条件は TestCd1=1 かつ TestFlg=1 のもの 一般的なSQL文に照らし合わせると CLng関数だけ 置き換えてあげれば うまく動くのではないでしょうか? CLng(mid(TestId,4,10)) ↓↓↓ CAST(mid(TestId,4,10) as numeric(10,0)) Oracle使いが SQLServer がんばってみましたw (^^;;;
お礼
回答ありがとうございます。 mid⇒SUBSTRINGで出来ました。 ありがとうございました。
お礼
完璧です。 ありがとうございました。