Sql server 我正在SQL Server中运行脚本并获得';将数据类型varchar转换为数字时出错;

Sql server 我正在SQL Server中运行脚本并获得';将数据类型varchar转换为数字时出错;,sql-server,Sql Server,我正在尝试运行下面的脚本 SELECT (ISNULL(AMOUNT, '') + '-' + ISNULL(TRAN_ID, '') + '-' + ISNULL(CONVERT(VARCHAR(8), TRAN_DATE, 112), '-')) AS TRAN_ID_NEW, ID, ACCOUNT_STATUS, ACCT_BAL, ACCT_BAL_DATE, AMOUNT, AUTH_IP_ADDRESS, BRANCH_ID

我正在尝试运行下面的脚本

SELECT 
    (ISNULL(AMOUNT, '') + '-' + ISNULL(TRAN_ID, '') + '-' + ISNULL(CONVERT(VARCHAR(8), TRAN_DATE, 112), '-')) AS TRAN_ID_NEW,
    ID,
    ACCOUNT_STATUS,
    ACCT_BAL, ACCT_BAL_DATE,
    AMOUNT,
    AUTH_IP_ADDRESS,
    BRANCH_ID,
    ENTRY_TIME,
    TRAN_CURRENCY,
    TRAN_DATE,
    TRAN_ID,
    TRAN_PARTICULAR,
    TRAN_SUB_TYPE, TRAN_TYPE,
    VALUE_DATE,
    ACCOUNT,
    REF_DESC,
    ISNULL(REF_DESC, '') + ' ' + ISNULL(TRAN_PARTICULAR, '') + ' ' + ISNULL(AMOUNT, '') AS TRAN_PARTICULAR_NEW
FROM
    Txn;
但我有一个错误:

'将数据类型varchar转换为数字时出错'


请提供任何解决方案

您不明白的错误是什么?它告诉您问题所在,您正在尝试将
varchar
插入
numeric
列,并且
varchar
不能隐式转换为
numeric
。看看您的SQL,第一个表达式似乎是一个很好的起点。我猜AMOUNT和TRAN_ID都是数字数据类型(int,decimal…)。然后尝试将其添加到varchar中,它将失败。另外,使用ISNULL(SomeInt,'')不会返回空字符串。它将把空字符串隐式转换为0的int。