2012-10-29 14 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

好的感谢评论我明白,我试图将其转换为十进制数字的一些字段不是数字 - 我只是把它作为字符铸造小数字的另一种方式,这是有效的。

感谢您的帮助