如何在 Snowflake/SQL 中的字符串中找到 second/third 的出现
How to find a second/third occurrence in a string in Snowflake/SQL
我正在尝试将 Tableau 中的 FINDNTH
函数重新创建到 Snowflake/SQL 中。用于此公式:lower(ifnull(left([SKU],(FINDNTH([SKU],"_",2)-1)),[SKU]))
https://help.tableau.com/current/pro/desktop/en-us/functions_functions_string.htm
FINDNTH(string, substring, occurrence)
目标是找到第二次出现的字符,然后 return 找到它剩下的所有内容。
字段:CGM415_Black_3XL
期望的结果:CGM415_Black
我试过使用 Position 和 Charaindex
https://docs.snowflake.net/manuals/sql-reference/functions/position.html
https://docs.snowflake.net/manuals/sql-reference/functions/charindex.html
Select
position('_',sku) a,
position('_',sku,a) b,
position('_',sku,position('_',sku)) c,
CHARINDEX('_',sku) d,
CHARINDEX('_',sku,d) e,
CHARINDEX('_',sku,CHARINDEX('_',sku)) f,
sku from DATABASE;
所有这些列 (a-f) 都显示 7 而不是 13(如果 CGM415_Black_3XL 是值)。
下面SQL给你结果
substring(sku,1,regexp_instr(sku,'_',1,2)-1)
regexp_instr(sku,'-',1,2) 会给你第 2 个 _
的位置
我正在尝试将 Tableau 中的 FINDNTH
函数重新创建到 Snowflake/SQL 中。用于此公式:lower(ifnull(left([SKU],(FINDNTH([SKU],"_",2)-1)),[SKU]))
https://help.tableau.com/current/pro/desktop/en-us/functions_functions_string.htm
FINDNTH(string, substring, occurrence)
目标是找到第二次出现的字符,然后 return 找到它剩下的所有内容。
字段:CGM415_Black_3XL
期望的结果:CGM415_Black
我试过使用 Position 和 Charaindex
https://docs.snowflake.net/manuals/sql-reference/functions/position.html https://docs.snowflake.net/manuals/sql-reference/functions/charindex.html
Select
position('_',sku) a,
position('_',sku,a) b,
position('_',sku,position('_',sku)) c,
CHARINDEX('_',sku) d,
CHARINDEX('_',sku,d) e,
CHARINDEX('_',sku,CHARINDEX('_',sku)) f,
sku from DATABASE;
所有这些列 (a-f) 都显示 7 而不是 13(如果 CGM415_Black_3XL 是值)。
下面SQL给你结果
substring(sku,1,regexp_instr(sku,'_',1,2)-1)
regexp_instr(sku,'-',1,2) 会给你第 2 个 _