電子書籍の厳選無料作品が豊富!

以下のデータで、dataで始まり、かつ数値部分を100~300の範囲で抽出したいと考えています。
テーブル名はtable1、フィールド名はretuです。
-retu-
data023
unknowndata
data105
data203
data827

SELECT retu FROM table1 WHERE retu LIKE 'data%' AND CAST(RIGHT(retu,3) AS Int) BETWEEN 100 AND 300
上記のSQLを作ってみたのですが、これだとunknowndataに対してCASTが行われてしまうらしく、CASTが失敗してデータを取り出すことができませんでした。
正しくデータを取り出すためには、どのように記述すれば良いでしょうか?

A 回答 (1件)

>WHERE retu LIKE 'data%'


>AND CAST(RIGHT(retu,3) AS Int) BETWEEN 100 AND 300

>WHERE retu LIKE 'data%'
>AND ISNUMERIC(RIGHT(retu,3))=1
>AND CAST(RIGHT(retu,3) AS Int) BETWEEN 100 AND 300
または
>WHERE retu LIKE 'data%'
>AND RIGHT(retu,3) BETWEEN '100' AND '300'
>AND ISNUMERIC(RIGHT(retu,3))=1
とすればよいでしょう。
    • good
    • 0
この回答へのお礼

前者は以前と同様にCAST時でエラーが発生しましたが、
後者で処理を実現できました!
>WHERE retu LIKE 'data%'
>AND RIGHT(retu,3) BETWEEN '100' AND '300'
>AND ISNUMERIC(RIGHT(retu,3))=1
回答、ありがとうございました!

お礼日時:2010/01/06 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!