【问题标题】:WHERE Statement Throwing Error using VARCHAR [duplicate]使用 VARCHAR 的 WHERE 语句抛出错误 [重复]
【发布时间】:2021-10-18 17:54:55
【问题描述】:

我正在使用带有 RPostgreSQL 驱动程序的 DBI 包从 amazon redshift 数据库进行查询,并且能够通过简单查询毫无问题地提取表。通过简单的查询,我的意思是这样的:

'SELECT * FROM transactions ORDER BY timestamp DESC LIMIT 200' 

当我在具有 FLOAT8 类型的字段上使用 WHERE 语句时,同样没有问题。查询如:

'SELECT * FROM transactions ORDER BY timestamp WHERE transaction_amt < 5 DESC LIMIT 200' 

当尝试将 WHERE 语句与类型为 VARCHAR 的字段一起使用时会出现此问题。查询如:

'SELECT * FROM transactions ORDER BY timestamp WHERE type = 'Credit Card' DESC LIMIT 200' 

给我一​​个错误提示:

Error in postgresqlExecStatement(conn, statement, ...) : 
  RS-DBI driver: (could not Retrieve the result : ERROR:  column "credit card" does not exist in transactions
)



我的问题是在将 WHERE 语句与这些包或此特定数据库一起使用时是否有一些特定的语法。为什么它会告诉我“信用卡”列不存在?

在查看有关每个字段的信息时,我确实看到“类型”和许多其他字符列的 Len 为 -1,这可能与它有关吗?

【问题讨论】:

    标签: r postgresql amazon-redshift dbi rpostgresql


    【解决方案1】:

    没关系,事实证明错误是由于在外部使用单引号而在查询中使用双引号引起的。我将其切换为在外部使用双引号,在内部使用单引号。

    这个:

    "SELECT * FROM transactions ORDER BY timestamp WHERE type = 'Credit Card' DESC LIMIT 200"
    

    不是这个:

    'SELECT * FROM transactions ORDER BY timestamp WHERE type = "Credit Card" DESC LIMIT 200'
    

    有时编码让我觉得自己很笨。

    【讨论】:

    • R 和 python 通常在单引号和双引号之间都是不可知的,但并非所有语言都共享该属性。 SQL 和 bash shell 是两种著名的语言,它们有非常不同的解释。很高兴你找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2020-12-09
    相关资源
    最近更新 更多