2011-01-06 22 views
1

Excelにシートがあります。 1つの列(「ID」)には、値が1.01,1.02,1.03,2.01,3.01,3.04などの文字列が含まれています。ExcelとSQL:Selectステートメントで文字列をdoubleに変換する方法

"ID"がある値以上の行をすべて取得したいSQLステートメントとADO 接続(VBScriptコードから)を使用します。 2つの質問があります:

1)IDの値をSQLで倍に変換できますか?ですから、値を浮動小数点数として比較し、<と条件を適用することができます。 2)Excelワークブックのselect文マクロで使用できますか?私は整数に列をキャストした場合、私は同じ効果がありますので、私はCInt関数の機能を使用:

Select * from ["&strSheetName&"$] where CInt(TestCaseId) >= " & abs (strRow) 

答えて

0

を試してみてください関数はCDbl()です。

SELECT CDbl(ID) AS ID_float 
    FROM [Sheet$]; 

DOUBLEは、したがって収縮、FLOATの同義語であるCD OUそれは動作しません

+2

'CInt'は' 'SMALLINT'へのキャスト(2バイト、Int16など)です。 「INTEGER」(4バイト、Int32など)にキャストしたい場合は、 'CLng'関数が必要です。はい、それは 'CInt'がSQLの' INTEGER'にはマッピングされないが、 'CInt'はVBAから「借用」されているので、IntegerはInt16(2バイト)を意味します。 – onedaywhen

0

は、私は解決策を見つけた

WHERE CONVERT (ID, FLOAT) >= value 
+0

bl EにAST、エラー:「[Microsoft]の[ODBC Excelのドライバー]構文エラー(演算子がありません)をクエリ式 'Cast(TestCaseIdとしてFloat)> 20.01'に追加しました。 " SQLステートメント:Select * from Main $] Cast(TestCaseId Float)> 20.01 – vmg

+0

大文字より前にスペースがないことにクエリが敏感である可能性がありますか? – Alain

+0

私はODBCがCASTがconvertを使って試しているとは思わないと思います。編集済みの回答を参照してください。 – Dunc

関連する問題