雪花函数创建
2021-10-05
309
我正尝试通过创建一个函数在 Snowflake 中实现以下功能
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
上述代码在 mssql 中运行,但我尝试无法在 Snowflake 中创建一个函数。
如何在 Snowflake 中创建该函数?
1个回答
以下示例可能会有所帮助:
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 更易于阅读。
Rich Murnane
2021-10-05