终端错误中的 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”子句的原因是因为我试图在一个表中加入的数字前面有一个字母:
例如P123456
和 123456
【问题讨论】:
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'的主要内容,如果未能解决你的问题,请参考以下文章