如何在 sybase 上将数字转换或转换为 varchar 数据类型?
How to cast or convert numeric to varchar data type on sybase?
DECLARE
@k numeric,
@acc numeric
SET
@k = 651393561522 ,
@acc = 1231234560
WHILE (@k < 651393563552)
BEGIN
SET @k = @k + 1 ,
@acc = @acc + 1
insert into recipients (id, client_id, inn, name, bic, bill, version)
VALUES(@k, 1, @acc, 'clientid'+ cast(@k as varchar), 300335, 'bill'+cast(@acc as varchar), 1)
END
有这样的错误:
[42000][257] Implicit conversion from datatype 'NUMERIC' to 'VARCHAR' >is not allowed. Use the CONVERT function to run this query.
[42000][257] Implicit conversion from datatype 'INT' to 'VARCHAR' is >not allowed. Use the CONVERT function to run this query.
错误消息提到 隐式 转换错误,因此这往往会排除 cast()
调用正在执行显式 次转换。
这给我们留下了另一个 columns/values 的数据类型不匹配问题; OP 将要仔细检查 recipients
列的数据类型:
第一条错误消息提到 numeric to varchar
,因为唯一的数值是 @k
和 @acc
,我猜 id
或 inn
列定义为 varchar
第二条错误消息提到 integer to varchar
并且由于 Sybase (ASE) 将 1
和 300335
视为整数,我猜测 client_id
、bill
或 version
列定义为 varchar
DECLARE
@k numeric,
@acc numeric
SET
@k = 651393561522 ,
@acc = 1231234560
WHILE (@k < 651393563552)
BEGIN
SET @k = @k + 1 ,
@acc = @acc + 1
insert into recipients (id, client_id, inn, name, bic, bill, version)
VALUES(@k, 1, @acc, 'clientid'+ cast(@k as varchar), 300335, 'bill'+cast(@acc as varchar), 1)
END
有这样的错误:
[42000][257] Implicit conversion from datatype 'NUMERIC' to 'VARCHAR' >is not allowed. Use the CONVERT function to run this query.
[42000][257] Implicit conversion from datatype 'INT' to 'VARCHAR' is >not allowed. Use the CONVERT function to run this query.
错误消息提到 隐式 转换错误,因此这往往会排除 cast()
调用正在执行显式 次转换。
这给我们留下了另一个 columns/values 的数据类型不匹配问题; OP 将要仔细检查 recipients
列的数据类型:
第一条错误消息提到
numeric to varchar
,因为唯一的数值是@k
和@acc
,我猜id
或inn
列定义为varchar
第二条错误消息提到
integer to varchar
并且由于 Sybase (ASE) 将1
和300335
视为整数,我猜测client_id
、bill
或version
列定义为varchar