SQL语句类型转换问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句类型转换问题相关的知识,希望对你有一定的参考价值。

select a,b
into #M
from S where b=cast(b as int)

select sum(b) from #M
b本来是varchar型 是不能用sum函数,我把他转换成int,但是我上面那样写了之后为什么还抱错:sum or average aggregate 运算不能以 varchar 数据类型作为参数

--我在Sqlserver中
1.错误很明显,你的b字段有不是全数字的字符串
如果不需要错误数据直接 使用isnumeric来判断是否是数字,是返回1,不是返回0
上面改成这样即可
select a,b
into #M
from S
--这里可以显示转换cast isnumeric(b) as int,也可以不转换 数据库会默认隐式转换
select sum( Case when ISNUMERIC(b) = 1 then b ELSE 0 END ) from #M

2.如需要找到错误数据可以
SELECT *
FROM(
select *,Case when ISNUMERIC([ID]) =1 then [ID] ELSE 0 END AS 'aa' from #M
)as t WHERE aa=0

3.或用like方式也能找出不是数字的字符串
select *
from #M
WHERE id like '[0-9][0-9][0-9]'
参考技术A 你只在where条件中使用了类型转换,应该是
select a,cast(b as int)
into #M
from S
就可以了
参考技术B select a,convert(int,b) b into #M
from S
向临时表写的时候就应该把b列变成int型
select sum(b) from #M
参考技术C 你查询的时候转换下就可以了
不用在where那里转换吧

select a,cast(b as int) as b
into #M
from S

select sum(b) from #M
参考技术D 你的b列里面是不是类似'123' 之类的数据,也就是说全部以数字形式出现的字符类型,才可以转化int。有可能是这个原因。

以上是关于SQL语句类型转换问题的主要内容,如果未能解决你的问题,请参考以下文章

sql语句中怎样将字符类型转换成数字类型

sql语句中数据类型转换怎么写

sql语句 中把varchar类型转换成int

sql语句中如何将字符类型转换成数字类型?

sql语句中 数据类型转换 string to int

怎么将sql server 语句中integer类型转换成string