如何在BigQuery中提取字符串的70%字符?解决短串兼容问题
解决BigQuery提取字符串70%字符的问题
核心方案
要实现提取每个姓名的70%字符,需先计算字符串长度的70%,同时处理短字符串的边界情况,避免出现无效的截取长度(如负数、0)。
具体SQL实现
结合BigQuery内置函数组合完成:
LENGTH(Name):获取姓名的字符长度ROUND(LENGTH(Name) * 0.7):计算长度的70%并取整(可按需替换为CEIL向上取整或FLOOR向下取整)GREATEST(..., 1):确保截取长度至少为1,避免短字符串时出现异常
完整示例语句
SELECT Name, ID, SUBSTRING(Name, 1, GREATEST(ROUND(LENGTH(Name) * 0.7), 1)) AS trimmed_name FROM your_table_name
对示例数据的处理结果
| Name | ID | trimmed_name |
|---|---|---|
| Avi | 01 | Av |
| Li | 02 | L |
| Amandeep | 03 | Amande |
可选调整
- 若需要向上取整(比如长度3时70%为2.1,取3),替换
ROUND为CEIL:
SUBSTRING(Name, 1, GREATEST(CEIL(LENGTH(Name) * 0.7), 1))
- 若需要向下取整,替换
ROUND为FLOOR:
SUBSTRING(Name, 1, GREATEST(FLOOR(LENGTH(Name) * 0.7), 1))
内容的提问来源于stack exchange,提问作者mp.kaur
相关产品推荐
相关产品推荐

