如何在SQL中将varchar转换为int

时间:2014-06-03 20:05:17

标签: asp.net sql int type-conversion varchar

如何在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时转换失败。

4 个答案:

答案 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)