sql server中convert函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:15:07
/*检索总学分为80-89分的学生的姓名,并将总学分转换为char(20)*/
select 姓名,总学分
from xs1
where convert(char(20),总学分) like '8_'
go 原来总学分字段的类型为float
问:看上面这段代码,是把总学分字段的类型转化为char(20),这种转化是会不会改变表的结构?还是只是把显示的满足条件的数据的类型变化成char(20)显示在查询分析器的下面。可是要是这样的话,我怎么能看出来类型是变化了呢?
select 姓名, convert(char(20),总学分) as 总学分
from xs1
where convert(char(20),总学分) like '8_'
总学分原来是float型的,只有转化后才可以用like进行字符串匹配,可是我写成
select 姓名, 总学分
from xs
where 总学分 like '8_' 时也能正常运行,是怎么回事。此时前后类型不一样呀

转换是临时的,仅供筛选记录使用,select语句肯定不会改变表结构的
另外,查询分析器里显示的也没有转换,如果
select 姓名, convert(char(20),总学分) as 总学分
from xs1
where convert(char(20),总学分) like '8_'
才是将显示的转换,但表结构也是不会变的,仅是显示而已

查询结果的类型并没有转化.显示的是原类型

where convert(char(20),总学分) like '8_'
只是查询条件中将类型转化后符合条件的

这种转化是不会改变表的结构
为什么要这么麻烦呢?直接 总学分 between 80 and 89不就可以了?