獲得一個誤差變換的varchar浮動。誤差變換VARCHAR浮動
有一個表(不是我製作)與result
柱,有varchar數據。我想轉換爲浮動以獲取> 180.0的所有值。
SELECT result FROM table WHERE result > 180.0
產生錯誤。有趣的是,雖然:
WITH temp AS (
CASE
WHEN ISNUMERIC(result)=1 THEN CAST(result as FLOAT)
ELSE CAST(-1.0 AS FLOAT)
END AS result
)
這運行良好。當我與它配對:
SELECT temp.result FROM temp WHERE temp.result > 180.0
我再次得到錯誤。思考?
UPDATE:請求完全的代碼...
WITH temp AS (
SELECT
CASE
WHEN ISNUMERIC(result)=1 THEN CAST(result as FLOAT)
ELSE CAST(-1.0 AS FLOAT)
END AS result
FROM table)
SELECT temp.result FROM temp WHERE temp.result > 180.0
使用SQL-SERVER 2008 RC2。
你能不能給您使用確切的語法?您的「WITH .. AS(CASE ...)」不完整且不正確。 –
我試圖重現錯誤,但不能...我把以下代碼發佈和從@t中選擇並返回199. declare @t table(result varchar(500))insert into @t(result )值('199.00')插入到@t(結果)值('test'); –
@Jeremy:你需要一個通過'ISNUMERIC'測試但不能轉換的測試值,比如'1,0''。 –