我是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 回答
您无法使用上面的convert语句将字母数字转换为bigint . 因此,您需要将转换更改为首先将Hex转换为Int . 但是,您不需要convert语句,因为以下两行返回相同的值 . 所以只需使用第二个 .
关于你的第一个问题,语法是错误的,但我不确定你想要什么回来 . 如果要从名为“yourTableName”的表中转换列START_TIME,则可以执行此操作 .
或者,根据下面评论中的约束,使用动态SQL尝试此版本 .