子查询中的问题 [英] Problem in sub query
问题描述
亲爱的先生,我对sql查询有问题,请帮助我
例如:
Dear sir i have a problem regarding to sql query please help me
ex:
select schchargename,amount from tbschcharge where schchargeid in(select stdchrgs from tbstdadmcharges where stdadmno=4569)
schchargeid是int数据类型的第一个表
stdchrgs是第二个表中的varchar数据类型
这给我错误无法将varchar转换为int
这个qyery给出的结果是:选择schchargename,从tbschcharge中的金额,其中schchargeid在(1,2,4,7)
我想要这个输出:
安全2500
电脑费用300
建筑基金200
学费300
Randeep Chauhan
schchargeid is int data type first table
stdchrgs is varchar data type in second table
this give me error cannot convert varchar to int
this qyery give result: select schchargename,amount from tbschcharge where schchargeid in(1,2,4,7)
I want this output:
Security 2500
Computer Fees 300
Building Fund 200
Tution Fees 300
Randeep Chauhan
推荐答案
这应该有效:
This should work:
DECLARE @list AS varchar(50);
SET @list = (SELECT stdchrgs FROM tbstdadmcharges WHERE stdadmno=4569)
SELECT schchargename,amount
FROM tbschcharge
WHERE PATINDEX(@list, LTRIM(RTRIM(CONVERT(varchar(10), schchargeid))) + ',') > 0 OR
PATINDEX(@list, ',' + LTRIM(RTRIM(CONVERT(varchar(10), schchargeid)))) > 0
它将stdchrgs列中的varchar转换为整数.
注意:这只是一种解决方法,因为存储在varchar列中的整数值表明DB设计中出现了问题.
最好的问候,
-MRB
It converts the varchar in column stdchrgs to integers.
Note: This is only a workaround as integer values stored in a varchar column are an indication that something went wrong in the DB design.
Best Regards,
-MRB
使用以下脚本,这应该可以工作
选择schcharge名称,从tbschcharge的量(其中CAST(schchargeid为varchar))输入(从tbstdadmcharges的stdchrgs,其中stdadmno = 4569)
或
选择schcharge名称,从tbschcharge的数量转换为(convert(varchar,schchargeid)所在的位置(从tbstdadmcharges的stdchrgs,其中stdadmno = 4569选择)
上面我将INT值转换为VARCHAR,由于大小原因,bcoz INT无法转换为VARCHAR.
use below script, this should work
select schchargename,amount from tbschcharge where CAST(schchargeid as varchar) in(select stdchrgs from tbstdadmcharges where stdadmno=4569)
OR
select schchargename,amount from tbschcharge where Convert(varchar,schchargeid ) in(select stdchrgs from tbstdadmcharges where stdadmno=4569)
above i converted INT value to VARCHAR , bcoz INT can not convert to VARCHAR due to of size.
这篇关于子查询中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!