在 Snowflake 中复制 STUFF SQL
Replicate STUFF in Snowflake SQL
你好雪花社区,
我正在尝试在 Snowflake 中复制 STUFF 函数。我在参考列表中没有找到类似名称的函数,所以希望有人能给我指明正确的方向吗?
Googled example
谢谢各位好心人
杜
你可以构造一个字符串。所以,对于:
stuff(col, x, y, str)
使用:
left(col, x) || str || substr(col, x + y + 1)
加上 Gordon 提供的内容,如果您想要一个用户定义的函数来减少您必须编写的转换量,这个应该可行:
create or replace function STUFF(S string, STARTPOS int, LENGTH int, NEWSTRING string)
returns string
language SQL
as
$$
left(S, STARTPOS) || NEWSTRING || substr(S, STARTPOS + LENGTH + 1)
$$;
看看ARRAY_AGG
。这将为您提供重组为数组的字段的所有分组记录。对于您图片中的示例:
SELECT SEC_NAME,ARRAY_AGG(USR_NAME) AS USR_NAME
FROM TABLE_NAME
GROUP BY SEC_NAME
如果这还不够,请在上面使用 ARRAY_TO_STRING
。
参考:https://docs.snowflake.com/en/sql-reference/functions/array_to_string.html
链接的示例在我看来并不像 STUFF
,尽管我确实不熟悉它。不过,我很惊讶没有人提到 LISTAGG
,这似乎至少在示例中完全符合您的要求。对于该示例,我希望通过此查询获得该结果:
SELECT SEC_NAME, LIST(USR_NAME)
FROM TABLE
GROUP BY SEC_NAME
您分享的 link 另有建议,但如果您真的在 Snowflake 中寻找 stuff
等效函数,那么 insert 函数就是您所需要的。它的用法与 stuff
相同
insert(string, start, length, new_string)
示例代码
Snowflake: select insert('ABC Network', 1, 3, 'News');
SQL Server: select stuff('ABC Network', 1, 3, 'News');
你好雪花社区,
我正在尝试在 Snowflake 中复制 STUFF 函数。我在参考列表中没有找到类似名称的函数,所以希望有人能给我指明正确的方向吗?
Googled example
谢谢各位好心人
杜
你可以构造一个字符串。所以,对于:
stuff(col, x, y, str)
使用:
left(col, x) || str || substr(col, x + y + 1)
加上 Gordon 提供的内容,如果您想要一个用户定义的函数来减少您必须编写的转换量,这个应该可行:
create or replace function STUFF(S string, STARTPOS int, LENGTH int, NEWSTRING string)
returns string
language SQL
as
$$
left(S, STARTPOS) || NEWSTRING || substr(S, STARTPOS + LENGTH + 1)
$$;
看看ARRAY_AGG
。这将为您提供重组为数组的字段的所有分组记录。对于您图片中的示例:
SELECT SEC_NAME,ARRAY_AGG(USR_NAME) AS USR_NAME
FROM TABLE_NAME
GROUP BY SEC_NAME
如果这还不够,请在上面使用 ARRAY_TO_STRING
。
参考:https://docs.snowflake.com/en/sql-reference/functions/array_to_string.html
链接的示例在我看来并不像 STUFF
,尽管我确实不熟悉它。不过,我很惊讶没有人提到 LISTAGG
,这似乎至少在示例中完全符合您的要求。对于该示例,我希望通过此查询获得该结果:
SELECT SEC_NAME, LIST(USR_NAME)
FROM TABLE
GROUP BY SEC_NAME
您分享的 link 另有建议,但如果您真的在 Snowflake 中寻找 stuff
等效函数,那么 insert 函数就是您所需要的。它的用法与 stuff
insert(string, start, length, new_string)
示例代码
Snowflake: select insert('ABC Network', 1, 3, 'News');
SQL Server: select stuff('ABC Network', 1, 3, 'News');