snowflake-cloud-data-platform - 雪花函数创建
问题描述
我正在尝试通过创建一个函数在雪花中实现以下功能
声明@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 中工作,但我试图无法在雪花中创建函数
谁能通过创建函数来帮助我解决雪花问题
解决方案
以下示例可能会有所帮助:
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 如果这个(或另一个)答案对您有帮助,请花点时间“接受”有帮助的答案,方法是单击答案旁边的复选标记,将其从“灰色”切换为“已填写”。
推荐阅读
- java - 使 ViewPager 的高度等于 PagerAdapter 中的最高项
- json - 如何使用 VB.net 使用 Json 补丁文件
- loops - 仅从下面的单元格插入行并复制公式
- c++ - “运算符类()”类型的运算符如何工作
- ansible - 如何在使用串行时结束整个播放(Ansible 2.9)
- javascript - 将对象数组复杂转换为另一个数组
- python - 如何重塑 Tensorflow 数据集中的数据?
- r - 尝试使用 TSLM 模型进行预测时出现“找不到对象”
- java - 在 jsp 页面的 html 报告中显示复选标记(“✓”)
- r - 如何根据提供的数据在 R 中重新创建下面的图表?