我需要使用包含文本数据和帐号的用户定义列(UDF1)将表联接到帐号(LDACCT)上的另一个表。帐号的格式应设置为十进制(16,0),但UDF1列中包含文本数据(以及帐号),因为UDF1还用于容纳帐号以外的目的(不是我的设计)。我当前的加入无效:
left outer join dbo.tbl_Loan_Legal_Descriptions as ll2
on CAST(uf.UDF1 as decimal(16, 0)) = ll2.LDACCT
我感到恐惧:Error converting data type varchar to numeric
,而且我似乎无法修改联接以解决错误。任何建议将不胜感激。
答案 0 :(得分:2)
请将“ on”部分更改为:
on CAST(uf.UDF1 as varchar(255)) = cast(ll2.LDACCT as varchar(255))
答案 1 :(得分:1)
也许您在uf
中的某一行中有某些内容无法转换为decimal
。试试
select
*
from uf
where left(uf.UDF1,1) not in ('0','1','2','3','4','5','6','7','8','9')
根据您是否要忽略该行,您可以尝试通过其他条件排除该行,也可以扭转联接,将另一端强制转换为字符串:
...
left outer join dbo.tbl_Loan_Legal_Descriptions as ll2
on uf.UDF1 = cast(varchar,ll2.LDACCT)
如果您尝试这样做,则可能需要从uf.UDF1
中去除前导零,但是由于您没有向我们显示表中的任何代表性数据,因此我们在这里所做的只是猜测或谨慎。 / p>