如何在SQL中将varchar
转换为int
?我的代码是这样的,但我尝试过转换和转换,但它们不起作用。声明/设置也不起作用。
select
Branch.BranchNo,
COUNT(Member.MemberID) as 'Number of Members'
from
Branch
where
'Number of Members' > 2
错误:
将varchar值'Number of Members'转换为数据类型int时转换失败。
答案 0 :(得分:4)
使用:
select Branch.BranchNo, COUNT(Member.MemberID) as 'Number of Members' from Branch
......
HAVING COUNT(Member.MemberID) > 2
Sql按以下顺序运行: 从 哪里 通过...分组 有 选择 按顺序排列。
除了order by之外,您不能在任何子句中使用列别名。
您需要再次使用count函数而不是您提供的别名。 此外,您不能在where子句中使用聚合函数。在group by子句中发生任何聚合之前运行的位置。即使您没有明确地使用group by子句,sql也会将整个结果集视为一个组。
如果要过滤像sum / count / max这样的聚合,则必须在having子句中进行。
答案 1 :(得分:1)
你需要分组和
select Branch.BranchNo, COUNT(Member.MemberID) as "Number of Members"
from Branch
group by Branch.BranchNo
having COUNT(Member.MemberID) > 2
答案 2 :(得分:0)
SELECT
BRAND.BRANCHNO,
COUNT{MEMEBER.MEMBERID) AS [NUMBER OF MEMBERS]
FROM
BRANCH
GROUP BY
BRAND.BRANCHNO
HAVING
COUNT(MEMBER.MEMBERID) > 2
答案 3 :(得分:0)
您不能将分组函数用作“where”语句中的count。尝试改为使用HAVING:
从Branch HAVING COUNT(Member.MemberID)>中选择Branch.BranchNo,COUNT(Member.MemberID)作为'成员数'。 2
无论如何,将VARCHAR转换为INT将取决于您的数据库供应商:
Oracle:TO_NUMBER(varcharValue)
SQL Server:CAST(varcharValue AS INT)
Postgres:CAST(varcharValue AS INTEGER)