将变量传递给预定义函数 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
我是 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