首页 文章

将变量传递给预定义函数sybase / sql

提问于
浏览
1

我是sql语言的新手,我将非常感谢你的帮助 . 我想将变量(即列)传递给预定义的函数,如“convert”或“hextobigint” .

select hextobigint('14c9d0742dc')

返回1428563641052

同时下面的代码没有被执行()

begin 
declare @st varchar(16); 
set @st=dc.table.START_TIME;
select hextobigint('dc.table.START_TIME') FROM dc.table; 
end

错误

找不到关联名称“表” .

此函数还返回正确的值:

select convert (bigint,0x14c9d0742dc)

select convert (bigint,14c9d0742dc)

第1行的语法错误'c9d0742dc' .

select convert(bigint,dc.table.START_TIME) FROM dc.table

仅返回null,因为列的格式类似于“14c9d0742dc” .

范围是将变量(列)传递给这些函数“hextobigint”和“convert” . 能否请你帮忙?

1 回答

  • 2

    您无法使用上面的convert语句将字母数字转换为bigint . 因此,您需要将转换更改为首先将Hex转换为Int . 但是,您不需要convert语句,因为以下两行返回相同的值 . 所以只需使用第二个 .

    select convert (bigint,hextobigint('0x14c9d0742dc'));
    select hextobigint('0x14c9d0742dc');
    

    关于你的第一个问题,语法是错误的,但我不确定你想要什么回来 . 如果要从名为“yourTableName”的表中转换列START_TIME,则可以执行此操作 .

    begin 
    
    select hextobigint(START_TIME) FROM table_raw; 
    
    end
    

    或者,根据下面评论中的约束,使用动态SQL尝试此版本 .

    begin 
    declare @sql varchar(200);
    EXECUTE IMMEDIATE WITH RESULT SET ON 'select hextobigint(START_TIME) FROM table_raw;';
    end
    

相关问题