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

如何在BigQuery SQL中去除字符串末尾的字母?

如何用SQL去除ID末尾的字母?

当然可以,根据你使用的数据库类型,有多种实现方式,核心是匹配并移除字符串末尾的所有字母。以下是主流数据库的解决方案:

MySQL/MariaDB

使用REGEXP_REPLACE函数匹配末尾的字母并替换为空:

SELECT 
  id,
  REGEXP_REPLACE(id, '[A-Za-z]+$', '') AS cleaned_id
FROM your_table;

[A-Za-z]+$ 表示匹配字符串末尾连续的一个或多个大小写字母,将其替换为空即可得到清理后的ID。

PostgreSQL

同样使用REGEXP_REPLACE,语法略有差异:

SELECT 
  id,
  REGEXP_REPLACE(id, '[A-Za-z]+$', '', 'g') AS cleaned_id
FROM your_table;

这里的'g'参数表示全局替换,不过因为我们只匹配末尾的字母,不加也能正常工作,但加上更严谨。

SQL Server

2017及以上版本(支持正则)

直接用REGEXP_REPLACE:

SELECT 
  id,
  REGEXP_REPLACE(id, '[A-Za-z]+$', '') AS cleaned_id
FROM your_table;

旧版本(不支持正则)

可以通过PATINDEX定位最后一个数字的位置,再截取字符串:

SELECT 
  id,
  LEFT(id, PATINDEX('%[0-9][^0-9]*$', id)) AS cleaned_id
FROM your_table;

PATINDEX('%[0-9][^0-9]*$', id) 会找到最后一个数字的位置,LEFT函数截取到该位置即可保留数字及前面的部分。

Oracle

两种常用方式:

  1. 使用REGEXP_REPLACE:
SELECT 
  id,
  REGEXP_REPLACE(id, '[A-Za-z]+$', '') AS cleaned_id
FROM your_table;
  1. 使用REGEXP_SUBSTR匹配到最后一个数字为止的部分:
SELECT 
  id,
  REGEXP_SUBSTR(id, '^.*[0-9]') AS cleaned_id
FROM your_table;

^.*[0-9] 表示匹配从字符串开头到最后一个数字的所有字符,自动忽略末尾的字母。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:12:36