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

pass a variable to predefined function sybase/sql

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

select hextobigint('14c9d0742dc') 

returns 1428563641052

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

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

错误

Correlation name "table" not found.

还有函数returns的正确值:

select convert (bigint,0x14c9d0742dc)

但是

select convert (bigint,14c9d0742dc)

不会

Syntac error 'c9d0742dc' on line 1.

还有

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

returns 仅为空,因为该列的格式类似于“14c9d0742dc”。

范围是将变量(列)传递给这些函数"hextobigint"和"convert"。你能帮忙吗?

您不能使用上面的 convert 语句将字母数字转换为 bigint。因此,您需要将转换更改为首先将 Hex 转换为 Int。但是这时你不需要像下面两行的convert 语句return 一样的值。所以就用第二个吧。

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

关于您的第一个问题,语法错误,但我不确定您要找回什么。如果您想从名为 "yourTableName" 的 table 转换列 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