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

将变量传递给预定义函数sybase/sql,sql,sybase,sap-iq,Sql,Sybase,Sap Iq,我是sql语言新手,非常感谢您的帮助。我想将一个变量(即一列)传递给一个预定义的函数,如“convert”或“hextobigint” 返回1428563641052 同时,下面的代码不会被执行() 错误 找不到相关名称“表” 同样,对于函数,返回正确的值: select convert (bigint,0x14c9d0742dc) 但是 没有 第1行出现Syntac错误“c9d0742dc” 也 仅返回null,因为列的格式类似于“14c9d0742dc” 作用域是将变量(列)传递给这些函数

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

返回1428563641052

同时,下面的代码不会被执行()

错误

找不到相关名称“表”

同样,对于函数,返回正确的值:

select convert (bigint,0x14c9d0742dc)
但是

没有

第1行出现Syntac错误“c9d0742dc”

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


作用域是将变量(列)传递给这些函数“hextobigint”和“convert”。您能帮忙吗?

您不能用上面的convert语句将字母数字转换成bigint。因此,您需要将convert更改为首先将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

谢谢你的回复。我的列是表示十六进制值的字符串。格式如下:“14c9d0742dc”之前没有“0x”。第二个代码只返回null…需要从中读取的包含“开始时间”列的表的名称是什么?实际上是“表原始”。我只是想演示上面的情况。然后我更新了上面的SELECT语句以使用此表,它也应该适用于您。尝试使用动态SQL(请参阅上面编辑的答案,并选择使用动态SQL。这可能适用于您,
select convert(bigint,dc.table.START_TIME) FROM dc.table
select convert (bigint,hextobigint('0x14c9d0742dc'));
select hextobigint('0x14c9d0742dc');
begin 

select hextobigint(START_TIME) FROM table_raw; 

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