| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3210 人关注过本帖
标题:显示所有学生姓名及所选修课程的名称,并按姓名和课程名称排序出现的问题, ...
只看楼主 加入收藏
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
结帖率:86%
收藏
已结贴  问题点数:20 回复次数:5 
显示所有学生姓名及所选修课程的名称,并按姓名和课程名称排序出现的问题,请各位大神指教
问题:显示所有学生姓名及所选修课程的名称(若没有选修相应的课程,则显示课程为空),并按姓名和课程名称排序(Left Outer Joint)。
代码:
select sname,,cname

 from student left outer join SC on (SC.SNo=Student.SNo)left outer join Course on(SC.SNo=)
order by SName,CName;

出现的问题:在将 varchar 值 'TD001' 转换成数据类型 int 时失败。
个人分析:我查看了下我所创建的表,发现Sno表是char类型,Cno是int类型,由此造成了类型转换不符合,这时候我选择修改表的属性,但数据库系统显示的是无法修改,所以我想问下各位大神应该怎么办?是重新再建立一个表吗,还是。。。?  谢谢
搜索更多相关主题的帖子: 课程 姓名 
2016-05-03 13:31
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:5 
你3个表的结构是什么,
SC.SNo
Student.SNo

3个表的类型要相同,就算不相同,内容也要相同,要不就出错的。
比如
SC.SNo,Student.SNo 都是INT 如1001
是 char,但他的值,只能是数字的,如'1001',是可以转换的。
但如果 的值是 'A1001' 就会出错了

[此贴子已经被作者于2016-5-3 16:45编辑过]

2016-05-03 16:41
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
strtoint(str) 转换一下看看
2016-05-05 08:35
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:5 
以下是引用tlliqi在2016-5-5 08:35:50的发言:

strtoint(str) 转换一下看看

在将 varchar 值 'TD001' 转换成数据类型 int 时失败。
SQL内部本身就有自动转换的功能的,只是,转的时候,失败了。是由于,“TD001”不能转为有效的数字,如果是“001”就可以转的。他前面多了2个字符“TD”,所以内部转不了。
如果固定是“TD”+INT结果的,可以用 substring(字段,3,len(字段)-2)来取数后就可以自动转了。
2016-05-05 08:43
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:5 
declare @s1 varchar(10)
declare @s2 varchar(10)
declare @s3 int
set @s1='td001'
set @s2='001'
set @s3=1
select substring(@s1,3,len(@s1)-2)
select (case when @s2=@s3 then 'yes' else 'no' end) as 'y2',(case when @s1=@s2 then 'yes' else 'no' end) as 'y1'
上面是可以自己转的
如果@s2='001.1'就报错误,但你 等义 @s3为 numeric (10,2) 又可以了。
2016-05-05 08:55
Redeyes
Rank: 4
来 自:中国
等 级:业余侠客
威 望:1
帖 子:301
专家分:292
注 册:2015-5-13
收藏
得分:0 
回复 2楼 mywisdom88
您好,三个表的结构是相同的。当时我就是右击表后有个修改表的选项,我就看到其中一个表是char型,为了统一,我就改成了int型,不过最后结果是无法修改。谢谢您的解答,我上机的时候试试

做一名健壮的技术青年,如果未来无法用代码去改变世界,还可以考虑去搬砖。
2016-05-05 20:07
快速回复:显示所有学生姓名及所选修课程的名称,并按姓名和课程名称排序出现的问 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved