Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Snowflake Function Creation

I am trying to implement the below functionality in Snowflake by creating a function

Declare
@test VarBinary(518)=0x00E70001010800084100470047004200 
Select Case 
When SubString(@test, 1, 3) = 0x00E700 Then CAST(SubString(@test, 9, 510) As NVarchar(255)) 
When 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 

The above code is working in mssql but I am trying unable to create a function in Snowflake.

How can I create the function in Snowflake?

like image 812
user16595206 Avatar asked Apr 25 '26 14:04

user16595206


1 Answers

The following example might help:

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

Note: I cast to varchars using the :: notation, just to make the SQL a little easier to read.

like image 95
Rich Murnane Avatar answered Apr 29 '26 14:04

Rich Murnane



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!