如何在 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,我猜 idinn 列定义为 varchar

  • 第二条错误消息提到 integer to varchar 并且由于 Sybase (ASE) 将 1300335 视为整数,我猜测 client_idbillversion 列定义为 varchar