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

Truncate the first 5 values of a value in Bigquery

我有两个 table 正在尝试加入 bigquery。我加入他们的序列号,但对于 table 之一,序列号以 5 个零开头,而另一个则不是。我如何编写这个包含截断值的连接?

我可以在联接中执行此操作,还是必须事先执行此操作并将其另存为新的 table?

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 个零的 table 是 PT_Results。

例如... PT_Results 序列号 = 0000028106 Master_list_PT序列号#=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 转换为整数应该从比较的角度删除前导零。请注意,我使用派生的 table 进行转换,因此 ON 子句仅涉及纯列而不涉及函数。

更新:

如果你想比较两个序列列的前五位数字前导零被剥离后你可以尝试双重转换:

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