2012-10-29 15 views
2

我想在查詢的where子句中使用CAST()函數。基本上我在TableA中有一個類型爲Decimal(10,0)的FieldA,而TableB中的TypeB類型爲CHAR,我想在Fields A和B相同的條件下加入兩個表。在where子句中使用Cast()函數 - T-SQL

我已經嘗試了簡單

select FieldA , FieldB from tableA left join tableB 
on cast(FieldB as decimal(10,0))= FieldA 

但它返回一個錯誤的CAST子句中不承認

編輯,這是從法文翻譯不好

字符時,正確的翻譯似乎是

流延規範

(感謝亞歷克斯·K)無效字符值

然後我試圖做類似

select tableA.fieldA, tableC.fieldC 
from tableA left join 
(select cast(fieldB as decimal(10,0)) fieldC from tableB) 
as tableC on fieldC=fieldA 

但我返回

我同樣的錯誤我真的不是SQL專家,基本上只是在這裏和那裏使用一些SELECT,試圖環顧相似的問題,但看不到與我的問題相匹配的答案。

任何人有想法?謝謝

+0

我從來沒有看到錯誤消息之前,但我只能猜測1)它是從一個非英語語言的翻譯和2)你有它需要一個小數點的逗號反之亦然FieldB –

+4

你可以在這裏粘貼精確的錯誤按摩嗎? (即使它不是英文)也包括所有可能存在的數字。 –

+0

由於性能方面的原因,您的方法不具有可擴展性。最好有一個包含存儲在數據庫中的「CAST」值的附加列。 一般來說,儘量避免在'JOIN's和'WHERE'子句中使用函數。 – SchmitzIT

回答

0

好的感謝評論我明白,我試圖將其轉換爲十進制數字的一些字段不是數字 - 我只是把它作爲字符鑄造小數字的另一種方式,這是有效的。

感謝您的幫助