Google bigquery 截断Bigquery中某个值的前5个值

Google bigquery 截断Bigquery中某个值的前5个值,google-bigquery,truncate,Google Bigquery,Truncate,我试图在bigquery上连接两个表。我在序列号上加入了它们,但对于其中一个表,序列号以5个零开始,而在另一个表上则没有。如何使用截断的值编写此联接 我可以在联接中执行此操作,还是必须先执行此操作并将其保存为新表 SELECT * FROM [dataworks-356fa:FirebaseArchive.PT_Results] AS Model_Results JOIN [dataworks-356fa:FirebaseArchive.Master_List_PT] as Master_Lis

我试图在bigquery上连接两个表。我在序列号上加入了它们,但对于其中一个表,序列号以5个零开始,而在另一个表上则没有。如何使用截断的值编写此联接

我可以在联接中执行此操作,还是必须先执行此操作并将其保存为新表

SELECT * FROM [dataworks-356fa:FirebaseArchive.PT_Results] AS Model_Results
JOIN [dataworks-356fa:FirebaseArchive.Master_List_PT] as Master_List on Serial=Serial_Number
包含5个零的表是PT_结果

例如。。。 PT#U结果序列#=0000028106
Master_list_PT serial#=28106尝试将两列强制转换为int:

SELECT *
FROM
(
    SELECT
        SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5) AS Serial,
        Latest_Use,
        Total_Hours,
        Devices_Connected
    FROM [dataworks-356fa:FirebaseArchive.PT_Results]
) AS Model_Results
JOIN
(
    SELECT
       SUBSTR(CAST(CAST(Serial_Number AS INT) AS STRING), 1, 5) AS Serial_Number,
       Status,
       Model_Number
    FROM [dataworks-356fa:FirebaseArchive.Master_List_PT]
) AS Master_List
    ON Model_Results.Serial = Master_List.Serial_Number
从比较的角度来看,将
Serial
转换为整数应删除前导零。请注意,我使用了一个派生表来进行转换,因此
ON
子句只涉及纯列,而不涉及函数

更新:

如果要在去掉前导零后比较两个序列列的前五位数字,可以尝试双重转换:

SUBSTR(CAST(CAST(Serial AS INT) AS STRING), 1, 5)

我尝试了这个,这是我收到的错误。ON子句必须是且of=每个表中一个字段名的比较,所有字段名都以表名为前缀。考虑使用标准的SQL.COM/BigQue/DoS/Reals/StimultSQL/),它允许包含表达式和剩余谓词的非均匀连接和比较。然后,您可能需要使用派生表。使用两个表中的列更新您的问题。这可能会很难看。PT\u结果=串行最新\u使用总小时设备\u连接这是一个派生表我从更大的tableMaster列表中查询了这些结果\u PT=串行号状态模型_Number@W.Stephens让我知道我当前的查询是否适用于您。