BigQuery - 参数类型的运算符 = 没有匹配的签名:INT64、STRING

sqlserver

1个回答

写回答

Llm1995

2025-07-09 14:42

+ 关注

BigQuery——参数类型的运算符

在BigQuery中,参数类型的运算符是用于对数据进行比较和操作的重要工具。然而,有时候我们会遇到一种情况,即使用了相应参数类型的运算符,却没有找到匹配的签名。本文将介绍这种情况,并提供一些有关INT64和STRING参数类型运算符的案例代码。

INT64参数类型运算符

INT64是BigQuery中表示整数的参数类型。当我们使用等于(=)运算符对INT64参数类型的数据进行比较时,有时会遇到没有匹配的签名的情况。这通常是因为我们在使用等于运算符时,将INT64参数与其他参数类型进行比较,例如STRING。

例如,假设我们有一个包含用户数据的表,其中有一个名为“age”的INT64类型的列。我们想要查询所有年龄等于18的用户。我们可能会尝试以下查询:

SELECT *

FROM <code>project.dataset.table</code>

WHERE age = '18'

然而,这个查询将会返回“没有匹配的签名:INT64、STRING”的错误。这是因为我们将INT64参数类型的数据与STRING参数类型进行了比较。为了解决这个问题,我们需要将字符串'18'转换为INT64类型的数据。

我们可以使用CAST函数将字符串转换为INT64类型。以下是修正后的查询代码:

SELECT *

FROM <code>project.dataset.table</code>

WHERE age = CAST('18' AS INT64)

这样,我们将字符串'18'转换为INT64类型的数据,使得等于运算符能够正确比较这两个参数类型。

STRING参数类型运算符

STRING是BigQuery中表示字符串的参数类型。同样地,当我们使用等于(=)运算符对STRING参数类型的数据进行比较时,有时也会遇到没有匹配的签名的情况。

假设我们有一个包含用户数据的表,其中有一个名为“name”的STRING类型的列。我们想要查询所有名字等于“John”的用户。我们可能会尝试以下查询:

SELECT *

FROM <code>project.dataset.table</code>

WHERE name = 18

然而,这个查询将会返回“没有匹配的签名:STRING、INT64”的错误。这是因为我们将STRING参数类型的数据与INT64参数类型进行了比较。为了解决这个问题,我们需要将整数18转换为STRING类型的数据。

我们可以使用CAST函数将整数转换为STRING类型。以下是修正后的查询代码:

SELECT *

FROM <code>project.dataset.table</code>

WHERE name = CAST(18 AS STRING)

这样,我们将整数18转换为STRING类型的数据,使得等于运算符能够正确比较这两个参数类型。

在BigQuery中,当我们使用参数类型的运算符时,有时会遇到没有匹配的签名的情况。通过使用CAST函数,我们可以将一个参数类型转换为另一个参数类型,从而使得运算符能够正确比较这两个参数类型的数据。这种技巧在处理INT64和STRING参数类型时特别有用。

希望本文对于理解BigQuery中参数类型的运算符有所帮助,并且通过提供案例代码,读者能够更好地理解如何处理没有匹配的签名的情况。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号