You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL的LOCATE函数在BigQuery中的等价替代函数是什么

解决方案

报错原因

BigQuery未提供MySQL原生的LOCATE函数,需替换为BigQuery支持的等效函数,同时注意参数顺序差异:

  • MySQL LOCATE(待查找子串, 原字符串):返回子串在原字符串中首次出现的位置索引
  • BigQuery 等效函数为 STRPOS(原字符串, 待查找子串):功能完全一致,仅参数顺序和LOCATE相反,调整参数顺序即可正常运行

修改后可直接运行的代码

SELECT TRIM(CASE WHEN store_name like "%|%" THEN LEFT(store_name, STRPOS(store_name, '|') - 1) ELSE
                CASE WHEN store_name like "%,%" THEN LEFT(store_name, STRPOS(store_name, ',') - 1) ELSE
                     CASE WHEN store_name like "% - %" THEN LEFT(store_name, STRPOS(store_name, ' - ') - 1) ELSE
                         store_name
                     END
                END
             END) AS cleaned_store_name

可选简化写法

你可以使用BigQuery的正则提取函数简化嵌套CASE逻辑,实现相同效果:

SELECT TRIM(COALESCE(REGEXP_EXTRACT(store_name, r'^.*?(?=\||,| - )'), store_name)) AS cleaned_store_name

内容的提问来源于stack exchange,提问作者Tenserflu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:27:00