私はcase文を持っています。そして、私はそれぞれのためにどこかの部分を別に書く必要があります。私がしようとすると、どこの原因での陳述
CASE
WHEN (ISNUMERIC(REPLACE(ldd.Value, '%', '')) = 0)
THEN 'NONE'
WHEN (CONVERT(FLOAT,REPLACE(ldd.Value, '%', '')) > 9.0)
THEN 'HIGH'
WHEN (CONVERT(FLOAT,REPLACE(ldd.Value, '%', '')) < 7.0)
THEN 'LOW'
WHEN (CONVERT(FLOAT,REPLACE(ldd.Value, '%','')) BETWEEN 7.0 AND 9.0 )
THEN 'MEDIUM'
WHEN (ISNULL(ldd.Value,'') = '')
THEN 'NONE'
END
は書いどこNONE
SELECT class
,rollno
,Value
FROM STUDENT
WHERE (ISNUMERIC(REPLACE(ldd.Value, '%', '')) = 0)
エラーメッセージのための句は:datetimeデータ型にvarcharデータ型の変換は、範囲外の値になりました。
私は高い
SELECT class
,rollno
,Value
FROM STUDENT
WHERE (CONVERT(FLOAT,REPLACE(ldd.Value, '%', '')) > 9.0)
エラーメッセージのために書く:エラーが浮かぶようにデータ型varchar型に変換します。
where節のためのwritngの間に、最低値または最低値のレコードだけを取得するにはどうすればよいですか? 値のフィールドはVARCHAR
最初の問題は、数字に対して 'VARCHAR'列を評価していることです。あなたのエラーは、クエリではなく、データから来ています。その上にISNUMERICは0-9の間1を返します。 SQL Serverはカンマと日付を含む数字であると思うことがあります。 http://www.sqlservercentral.com/articles/IsNumeric/71512/ – Wil