错误:对于参数类型的运算符 = 没有匹配的签名:STRUCT<id STRING, name STRING>, STRING。支持的签名:ANY = ANY at [4:7]
Posted
技术标签:
【中文标题】错误:对于参数类型的运算符 = 没有匹配的签名:STRUCT<id STRING, name STRING>, STRING。支持的签名:ANY = ANY at [4:7]【英文标题】:Error: No matching signature for operator = for argument types: STRUCT<id STRING, name STRING>, STRING. Supported signatures: ANY = ANY at [4:7] 【发布时间】:2018-07-18 08:30:31 【问题描述】:我添加了一个使用标准 sql 的公共数据库。如下所示:
我添加了#standardsql
,另外我从设置中更改了它。查询如下:
#standardsql
SELECT field1,field2
FROM `censys-io.domain_public.current`
WHERE filed3 = "some_string_here";
我收到此错误:
Error: No matching signature for operator = for argument types: STRUCT<id STRING, name STRING>, STRING. Supported signatures: ANY = ANY at [4:7]
请告诉我问题的原因和解决方法
【问题讨论】:
令人困惑。能否详细说明。项目所有者有帖子here。我正在运行第二个查询:#standardsql SELECT domain, alexa_rank FROM domain_public.20171006 WHERE p443.https.tls.cipher_suite = 'TLS_RSA_WITH_AES_256_CBC_SHA';
为什么它对我不起作用?从他们的帖子中,他们声称它应该与 BigQuery 一起使用。你能解释一下问题吗?
好吧,表名的唯一区别是:而不是FROM domain_public.20171006
,我输入了FROM domain_public.current
,这是我在面板中看到的一个表,如OP中的屏幕截图所示。
能否提供表domain_public.current
的架构。至少p443.https.tls.cipher_suite
列的数据类型
@enle lin 感谢您的指点。这解决了部分问题。 p443.https.tls.cipher_suite
是 RECORD,我应该使用 p443.https.tls.cipher_suite.name
这是一个字符串。解决此问题后,this error 即使在我尝试了所有可能的处理位置后仍未解决。你能帮忙吗?
如果我发现一些有趣的东西,@user9371654 将在另一个问题中回答。在这个问题上,我认为windmark的答案是正确的,因为他在这里指出了问题。
【参考方案1】:
检查错误
Error: No matching signature for operator = for argument types: STRUCT<id STRING, name STRING>, STRING. Supported signatures: ANY = ANY at [4:7]
告诉我们你的线路
WHERE filed3 = "some_string_here";
有一个不正确的比较。左侧有STRUCT<id STRING, name STRING>
,这使得filed3 看起来像是一个结构字段或一个单独的表。因此,将其与字符串“some_string_here”进行比较是无效的。
【讨论】:
以上是关于错误:对于参数类型的运算符 = 没有匹配的签名:STRUCT<id STRING, name STRING>, STRING。支持的签名:ANY = ANY at [4:7]的主要内容,如果未能解决你的问题,请参考以下文章
在数据迁移时,出现错误:运算符不存在:布尔 = 整数提示:没有运算符与给定的名称和参数类型匹配
在 BigQuery 中按 Max(values) 返回列的名称。错误:“运算符 CASE 没有匹配的签名;”大查询
没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。 -- Netbeans、Postgresql 8.4 和 Glassfish