【问题标题】:How to count the rows of a varchar column and return an integer?如何计算 varchar 列的行数并返回一个整数?
【发布时间】:2019-08-13 14:55:57
【问题描述】:

我正在编写代码,该代码需要根据特定 ID 识别我的数据库中的列是否为空。我正在使用 Microsoft SQL Server Management Studio。

我试过了:

select count(*) as valid from table where id =7PB03150SW

但收到错误:

将 varchar 值转换为数据类型 int 时转换失败。

我也试过了:

select cast(( select count(*) from table where id = 7PB03150SW)as VarChar(120))

但收到错误:

将 varchar 值转换为数据类型 int 时转换失败。

我希望代码输出单个结果,即特定 ID 在表格中出现的次数。输出需要能够被 c# 文件读取。

【问题讨论】:

  • 你能告诉我们架构吗?听起来id 是一个 int 列
  • 您的id 列是INT 吗?如果是这样,7PB03150SW 不是用于比较的有效值,因为它是一个字符串。如果该列实际上是VARCHAR,则需要将7PB03150SW 括在引号中以表示它是一个字符串:where id = '7PB03150SW'
  • stackoverflow.com/questions/21984110/… 我想这就是你需要的。
  • count(*) 对满足您指定条件的行进行计数。 ID 是一个字符串。您省略了 ' ' 字符,因此 SQL 将尝试将 7PB03150SW 转换为 int。这导致了错误
  • 谢谢!我错过了''

标签: c# sql sql-server database


【解决方案1】:

查询几乎是正确的。您只需在 id 值之前和之后添加 ' 即可将其作为 varchar 传递。

所以查询应该是: select count(*) as valid from table where id ='7PB03150SW'

希望对你有帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    声明@ID int = 7PB03150SW 声明@SQL VARCHAR(MAX) Set @SQL = 'select count(*) from table where id='+cast(@ID AS VARCHAR) 执行(@SQL)

    希望它对你有用。

    【讨论】:

    • 欢迎来到stackoverflow。在回答问题时,您应该解释为什么您的代码 sn-p 将解决 OP 的问题。欲了解更多信息,请点击此处:How to Answer
    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 2021-06-04
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多