当前位置: 首页 > 知识库问答 >
问题:

如何在sybase上将数字转换为varchar数据类型?

孙成益
2023-03-14
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]从数据类型“NUMERIC”到“VARCHAR”的隐式转换

[42000][257]从数据类型“INT”到“VARCHAR”的隐式转换是

共有1个答案

谢唯
2023-03-14

错误消息提到了隐式转换错误,因此这往往会排除cast()调用执行的显式转换。

这给我们留下了其他列/值的数据类型不匹配问题;OP希望加倍检查收件人列的数据类型:

>

  • 第一条错误消息将数字提到varchar,由于唯一的数字值是@k@acc,我猜idinn列被定义为varchar

    第二条错误消息提到整数到varchar,由于Sybase(ASE)将1300335视为整数,我猜客户id账单版本列被定义为varchar

  •  类似资料:
    • 我的表'TBL1'中的''数据类型中有一列'amount'。现在我必须计算该列的总量(我知道我可以修改表的列,但我必须遵循一些过程来保持它为''。但是结果必须在datatype中返回。 但我搞错了。

    • 问题内容: 我试图使用像这样的数字列表。 这是sql过程的一部分,变量’list_of_ids’是varchar,它包含如下所示的id:1、2、3、4、5 ........如何使用此列表和此查询 问题答案: 也尝试一下。这可能是更好的解决方案,因为它不需要创建任何其他功能。oracle regexp_substr会将逗号分隔的值拆分为不同的行,并传递给查询。

    • 问题内容: 我创建了一个过程并收到了此消息 将varchar值’%’转换为数据类型int时,转换失败。 我不知道这可能是什么,但是当我将过程更改为这样时: 似乎工作正常。我是SQL的新手,所以可以得到任何帮助,也许有更好的方法来做我想做的事情? 问题答案: 这是在子句中: 是一个整数。因此,您需要将其转换为字符串: 为什么要使用称为的列是可疑的。也许您只想要:

    • 问题内容: 我正在尝试使用存储过程基于varchar类型的“名称”列的输入值来返回“项目”表的“ ItemId”列值,但是每当我将任何值传递给存储过程时,它都会向我返回错误: 将数据类型varchar转换为int时出错。 这就是我所说的: 问题答案: 您必须匹配参数:RETURN不会填充OUTPUT参数:您对@itemid的赋值可以做到这一点。 另外,您存储的过程太复杂了。对于从存储的proc返回

    • 问题内容: 在SO上进行了搜索和搜索,无法弄清楚 尝试将每个字段作为FLOAT进行铸造都无济于事,转换没有给我任何进一步的帮助。 如何获取以下case子句以返回THEN部分中所述的值? 错误:消息8114,级别16,状态5,行1将数据类型varchar转换为float时出错。 我的SQL查询的错误部分: average_days_pay = float terms_code = char 问题答案

    • 问题内容: 我试图在我的数字列中附加一些alphabt来获取记录。但即时通讯收到错误,我尝试了强制转换和转换功能。 例如 这里StandardCost是一个数字字段,但是当我获取记录时遇到错误,请看看。 问题答案: 我认为应该 或者