我有一张有多列的桌子.相关列包括:

  1. 名为HoursNUMERIC
  2. 名为ActiveBOOLEAN
  3. 一个名为TypeVARCHAR列列

Type过go 也是BOOLEAN,直到我需要两个以上的可能值,所以我将列更改为VARCHAR

我有一个曾经有效的大型查询.以下是我修改的查询部分:

(
    SELECT SUM("Hours")
    FROM "Table"
    WHERE
        (
            "Type" = "B"
            AND "Active" = TRUE
        )
) AS "Label",

上述查询部分的唯一更改是从"Type" = TRUE更改为"Type" = "B".其他的路由没有改变.现在,当我运行查询时,我收到以下错误:

字符串"A"的转换错误

如果将同一行更改为"Type" = "A""Type" = "C",则错误更改为:

*column unknown
*A

或者:

*column unknown
*C

我的目标是将Table中的Hours相加,其中Active的行数是TRUE,而指定的Type行数是TRUE.我不确定为什么其他(看似)简单的查询会失败.

推荐答案

第一个问题是,在条件"Type" = TRUE中,Firebird会将列Type的值强制为布尔值,而不是将TRUE转换为字符串.对于不是'TRUE''FALSE'(不区分大小写)的值,此操作失败.你需要用= 'TRUE'而不是= TRUE.

对于第二个问题,标准SQL和Firebird中的双引号(至少在Firebird的默认方言3中)用双引号分隔标识符,而不是字符串.字符串需要使用'A''C',而不是"A""C".当您使用"A"时,Firebird会将其视为对列A的列引用,在本例中,列A并不存在.

Sql相关问答推荐

PostgreSQL:获取每家店铺收入最高的员工

SQL Google Sheets:UNIQUE/DISTINCT和编码查询函数

如何在case语句中使用条件来计算成对变量

SQL查询:合并2个表

出现5次后,将所有正斜杠替换为连字符

为什么TRY_CONVERT返回一个XML验证错误而不是NULL?

按分类标准检索记录

在Oracle SQL中按月生成日期

如何在 golang squirrel lib 中添加 postgreSQL 的distinct on

如何在android房间中进行多个加入

DbUp for sqlserver 在 dbo 授权下为非 dbo 用户创建架构

使用多个数据库调用重载 CQRS 模式

SQL 语句将一列中的值与另一列中的不同值相加,同时按第三列进行分组?

为什么 get_json_object() 无法从存储在 Hive SQL 表中的 JSON 中提取值?

如何在 SQL Server 中将 -13422.8450 舍入到 -13422.84

过滤具有一对多关系的两个表之间的数据

从每行中排除最大元素

将单行中的多个行值转换为列

SQL Group By 然后映射出是否存在值

Postgres 窗口函数未按预期工作