首页 > 解决方案 > 雪花函数创建

问题描述

我正在尝试通过创建一个函数在雪花中实现以下功能

声明@test VarBinary(518)=0x00E70001010800084100470047004200 Select Case When SubString(@test, 1, 3) = 0x00E700 Then CAST(SubString(@test, 9, 510) As NVarchar(255)) 当 SubString(@test, 1, 3 ) = 0x00A700 Then CAST(SubString(@test, 9, 510) As Varchar(510)) When SubString(@test, 1, 3) = 0x01E700 Then CAST(SubString(@test, 9, CAST(SubString(@test, 6, 1) As Int)) As NVarchar(64)) Else Null End

上面的代码在 mssql 中工作,但我试图无法在雪花中创建函数

谁能通过创建函数来帮助我解决雪花问题

标签: snowflake-cloud-data-platform

解决方案


以下示例可能会有所帮助:

CREATE OR REPLACE FUNCTION MMfGetPropValChar(p1 varbinary)
RETURNS varchar
as
$$
  select 
    CASE
      WHEN substr(p1::varchar, 1, 3) = '0x00E700' 
         then substr(p1::varchar, 9, 510)::varchar
      WHEN substr(p1::varchar, 1, 3) = '0x01E700' 
         then substr(p1::varchar, 9, substr(p1::varchar, 6, 1))::varchar
   ELSE current_timestamp()::varchar
   End as test
$$
;


SELECT MMfGetPropValChar(to_binary(hex_encode('Snowflake'), 'HEX')) as res;

RES
2021-10-05 05:14:52.369 -0700

注意:我使用 :: 表示法转换为 varchars,只是为了使 SQL 更易于阅读。

我希望这会有所帮助...丰富

ps 如果这个(或另一个)答案对您有帮助,请花点时间“接受”有帮助的答案,方法是单击答案旁边的复选标记,将其从“灰色”切换为“已填写”。


推荐阅读