gpt4 book ai didi

sql - 大写正则表达式替换 Google Bigquery 中的捕获组

转载 作者:行者123 更新时间:2023-12-04 01:26:50 29 4
gpt4 key购买 nike

我正在尝试做一些非常简单的事情,但在 Big Query 中却变得相当复杂。我想将人名之类的东西转换为正确的大小写(每个单词的第一个字母大写)。

这是我目前正在处理的查询,它几乎可以正常工作!

SELECT 
REGEXP_REPLACE(
CONCAT(
UPPER(LEFT('tESt ing', 1)),
LOWER(SUBSTR('tESt ing', 2))
),
' ([a-z])',
UPPER(' \\1')
);

#outputs: Test ing
#desired output: Test Ing

出于某种原因,UPPER 未处理捕获的组。如果我将其他文本放入其中,则全部变为大写,但 cap 组变量保持小写。

对此非常感谢任何帮助。这似乎没有按预期工作(也许是操作顺序......),这似乎很奇怪。无论如何,提前致谢。

埃里克

最佳答案

所以我首先尝试了一种费力但(我认为)直接的方法:

SELECT
CONCAT(
UPPER(LEFT('tESt ing', 1)),
LOWER(REGEXP_EXTRACT(SUBSTR('tESt ing', 2), r'(\w* )')),
UPPER(REGEXP_EXTRACT(SUBSTR('tESt ing', 2), r' (\w)')),
LOWER(REGEXP_EXTRACT(SUBSTR('tESt ing', 2), r' \w(.*)'))
);

这似乎确实有效并根据需要返回 Test Ing

然后我尝试了一些简化来(我希望)稍微减少工作量:

SELECT
CONCAT(
UPPER(LEFT('tESt ing', 1)),
LOWER(REGEXP_EXTRACT('tESt ing', r'.(\w* )')),
UPPER(REGEXP_EXTRACT('tESt ing', r' (\w)')),
LOWER(REGEXP_EXTRACT('tESt ing', r' \w(.*)'))
);

这似乎也有效(相同的输出)。然而,它只删除了 SUBSTR 调用——而不是我担心成本更高的正则表达式操作。

不过,我认为这可能值得分享。

关于sql - 大写正则表达式替换 Google Bigquery 中的捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28161932/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com