说我有一个名为商人的列,其中包含以下值:
getServletConfigClasses()
我如何提取它:
DispatcherServlet
到目前为止,我一直在为每个字符使用Al's Coffee
Belinda & Mark Bakery
Noodle Shop 38
,但是有什么方法可以避免使用这么多的嵌套替换?
答案 0 :(得分:1)
如何仅从字符串中提取字母数字字符?
以下是用于BigQuery标准SQL
您也可以使用\W - not word characters (≡ [^0-9A-Za-z_])
,如下面的示例
REGEXP_REPLACE(merchant, r'\W', '')
如果要应用于问题的样本数据
#standardSQL
WITH `project.dataset.table` AS (
SELECT "Al's Coffee" merchant UNION ALL
SELECT "Belinda & Mark Bakery" UNION ALL
SELECT "Noodle Shop 38"
)
SELECT REGEXP_REPLACE(merchant, r'\W', '') cleaned_merchant
FROM `project.dataset.table`
结果是
Row cleaned_merchant
1 AlsCoffee
2 BelindaMarkBakery
3 NoodleShop38
很明显,如果您需要小写的结果-添加相应的功能-例如
SELECT REGEXP_REPLACE(LOWER(merchant), r'\W', '') cleaned_merchant
FROM `project.dataset.table`
答案 1 :(得分:0)
我为您提供解决方案!
选择 商家AS Original, LOWER(商家)AS小写 FROM TableName;
小写字母列显示所需的结果!
答案 2 :(得分:0)
在BigQuery中,您可以使用regexp_replace()
:
select regexp_replace(merchant, '[^a-zA-Z0-9]', '')
这是要用空字符串替换非字符或数字的任何内容。如果要保留更多字符,请将其添加到字符类中。
答案 3 :(得分:0)
BigQuery对我有用的是
SELECT regexp_replace(lower(Al's Coffee), "[^0-9a-zA-z]+","")
这将返回alscoffee