Javascript chartAt 不是 UDF$1(STRING) 处的函数
Javascript chartAt is not a function at UDF$1(STRING)
我有以下函数可以将任何字符串转换为标题大小写:
CREATE OR REPLACE FUNCTION udf.title_case(str STRING)
RETURNS STRING
LANGUAGE js AS """
return str
.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();})
""";
更新:
我将 chartAt
修改为 charAt
,但仍然出现相同的错误
并产生以下错误:
"project.dataset.charAt" is not a function at UDF(STRING) line 3, columns 110-111
我可以通过使用 []
符号来绕过这个错误,这并不理想,但是我用 substr
.
遇到了同样的错误
我通常在 JSBin 或类似工具中测试我的函数并且工作正常但是当将它转换为 Bigquery 时我需要在正则表达式中转义 \
然后处理这些意外错误。
对于那些没有 JS 编程艺术经验的人来说,生活会更加艰难。
在此先感谢您的帮助。
考虑使用 INITCAP 函数代替 JS UDF
它接受一个字符串,returns每个单词的第一个字符大写,所有其他字符小写
例如
SELECT INITCAP('I have the following function to convert any string to title case:')
产生以下输出
你写错了函数名,“char[t]At”而不是“charAt”。
我使用临时函数来测试
CREATE TEMP FUNCTION tempFunc(str STRING)
RETURNS STRING
LANGUAGE js AS """
return str
.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();})
""";
select tempFunc("abce")
结果是“Abce”。
您可以在您的 bigquery 编辑器中尝试此查询
我有以下函数可以将任何字符串转换为标题大小写:
CREATE OR REPLACE FUNCTION udf.title_case(str STRING)
RETURNS STRING
LANGUAGE js AS """
return str
.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();})
""";
更新:
我将 chartAt
修改为 charAt
,但仍然出现相同的错误
并产生以下错误:
"project.dataset.charAt" is not a function at UDF(STRING) line 3, columns 110-111
我可以通过使用 []
符号来绕过这个错误,这并不理想,但是我用 substr
.
我通常在 JSBin 或类似工具中测试我的函数并且工作正常但是当将它转换为 Bigquery 时我需要在正则表达式中转义 \
然后处理这些意外错误。
对于那些没有 JS 编程艺术经验的人来说,生活会更加艰难。
在此先感谢您的帮助。
考虑使用 INITCAP 函数代替 JS UDF
它接受一个字符串,returns每个单词的第一个字符大写,所有其他字符小写
例如
SELECT INITCAP('I have the following function to convert any string to title case:')
产生以下输出
你写错了函数名,“char[t]At”而不是“charAt”。 我使用临时函数来测试
CREATE TEMP FUNCTION tempFunc(str STRING)
RETURNS STRING
LANGUAGE js AS """
return str
.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();})
""";
select tempFunc("abce")
结果是“Abce”。 您可以在您的 bigquery 编辑器中尝试此查询