加入我有一個看起來像這樣一個數據庫:(以及幾乎; P)T-SQL與ISNUMERIC
TABLE1:
COL1 int (pk)
COL2 bit
COL3 int (FK to TABLE2 COL4)
TABLE2:
COL4 int (pk)
COL5 varchar(50)
根據比特值,表2中包含的數據將是數字或不是數字(1是數字)。
如果我運行此查詢:
SELECT
CAST(COL5 AS INT)
FROM
TABLE1
INNER JOIN
TABLE2 ON COL4 = COL3 AND COL2 = 1 AND ISNUMERIC(COL5)
我得到一個轉換失敗錯誤:
Conversion failed when converting the varchar value '£0.00' to data type int
查詢,不投,不返回此值,儘管 '0.00£'在桌子上。
我的印象是ON條件會在演員完成之前完成,還是我錯了(顯然)?
編輯:
運行:
SELECT CASE WHEN COL5 LIKE '%[^0-9]%' THEN -1
WHEN CAST(COL5 as bigint) > 2147483647 THEN -1
ELSE cast(COL5 as int) END
FROM TABLE1
INNER JOIN TABLE2
ON COL4 = COL3 AND COL2 = 1
執行,並沒有返回-1
值
尼斯解釋在博客上。 – 2016-03-13 10:24:43