终端错误中的 SQL:不匹配的输入 ')' 期望(在原始类型规范中靠近 'VARCHAR'

Posted

技术标签:

【中文标题】终端错误中的 SQL:不匹配的输入 \')\' 期望(在原始类型规范中靠近 \'VARCHAR\'【英文标题】:SQL in Terminal Error: mismatched input ')' expecting ( near 'VARCHAR' in primitive type specification终端错误中的 SQL:不匹配的输入 ')' 期望(在原始类型规范中靠近 'VARCHAR' 【发布时间】:2019-07-02 04:38:33 【问题描述】:

在将代码从我的代码编辑器复制/粘贴到终端时,我在终端中收到以下错误:

mismatched input ')' expecting ( near 'VARCHAR' in primitive type specification

这里是有问题的 SQL 代码:

left outer join order_history b
ON CAST(substr(a.order_id__c, 2)AS VARCHAR) = CAST(b.order_id AS VARCHAR)

我使用“substr”子句的原因是因为我试图在一个表中加入的数字前面有一个字母:

例如P123456123456

【问题讨论】:

Cast int to varchar的可能重复 【参考方案1】:

VARCHAR 可用于 CAST。

错误是因为没有提到 VARCHAR 的长度。

【讨论】:

【参考方案2】:

VARCHAR 不是 the CAST() function 的有效类型。您可以改用CHAR。另外,由于SUBSTR() 返回一个字符串,所以不需要CAST 其结果。

我猜在这种情况下,mysql 隐式转换应该允许你这样做:

substr(a.order_id__c, 2) = b.order_id

否则,我会推荐:

CAST(substr(a.order_id__c, 2) AS SIGNED) = b.order_id

【讨论】:

以上是关于终端错误中的 SQL:不匹配的输入 ')' 期望(在原始类型规范中靠近 'VARCHAR'的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语句中的 Databricks 错误:ParseException:不匹配的输入“Service_Date”

不匹配的输入“来自”期望 <EOF>

SPARK SQL 不在或不存在

期望不匹配:Golang 单元测试错误

如何在 Spark Table 中创建索引?

不匹配的输入 'org' 期望在表文件格式规范中靠近 'BY' 的 StringLiteral