首页 > 解决方案 > Big Query 中的正确案例

问题描述

我在 Big Query 的“香蕉”列中有这句话“我想买香蕉”。

我想得到“我想买香蕉”。我该怎么做?当我看到 LOWER 和 UPPER 时,我期待 PROPER(Bananas) 功能,但似乎不支持 PROPER 大小写?

DZ

标签: google-bigquery

解决方案


2020 年 10 月更新:

BigQuery 现在支持INITCAP函数 - 该函数接受一个 STRING 并将其返回,其中每个单词中的第一个字符为大写,所有其他字符为小写。非字母字符保持不变。

因此,不再需要以下类型的花式 UDF - 而您只需使用

#standradSQL
SELECT str, INITCAP(str) proper_str
FROM `project.dataset.table`

——~~~~~~~~~~~~~~~~~~

以下示例适用于 BigQuery Standrad SQL

#standradSQL
CREATE TEMP FUNCTION PROPER(str STRING) AS (( 
  SELECT STRING_AGG(CONCAT(UPPER(SUBSTR(w,1,1)), LOWER(SUBSTR(w,2))), ' ' ORDER BY pos) 
  FROM UNNEST(SPLIT(str, ' ')) w WITH OFFSET pos
));
WITH `project.dataset.table` AS (
  SELECT 'i Want to buy bananas' str
)
SELECT str, PROPER(str) proper_str
FROM `project.dataset.table`  

结果是

Row str                     proper_str   
1   i Want to buy bananas   I Want To Buy Bananas    

推荐阅读