子查询中的问题 [英] Problem in sub query

查看:56
本文介绍了子查询中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的先生,我对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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆