SQL Server 2005 - 转换失败

SQL Server 2005 - Converting failure

我正在 select 从 table 获取值。在 table 中有一个名为 value 的列。当值是数字时,我正在尝试 select 该值,在值的末尾带有 'g' 。但是,当我尝试这样做时,出现以下错误(见下文)。我认为这是因为我使用的是 ISNUMERIC,并且因为值是数字的字符串表示形式或字符串值 'None' (我知道这很奇怪,但我必须这样做),我遇到了转换失败。任何人都知道如何在 SQL Server 2005

中解决这个问题

错误

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'None' to data type int.

查询

SELECT a.student_assignment_id,        
           a.student_id,        
           a.location_id,        
           a.assignment_type,
            (
            Case 
                WHEN a.assignment_type = 'HW' THEN
                    CASE a.value 
                    WHEN ISNUMERIC(a.value) THEN RTRIM(a.value)+'g'
                    ELSE a.value
                    END
                ELSE a.value
            END 
            )  as value
            ,        
           a.start_date,        
           a.end_date,        
           a.course,              
           a.created_by,        
           a.creation_date,        
           a.modified_by,        
           a.modified_date,  

您需要使用 CASE WHEN ISNUMERIC(a.value) = 1 而不是 CASE a.value WHEN ISNUMERIC(a.value)

CASE WHEN a.assignment_type = 'HW' 
     THEN
         CASE WHEN ISNUMERIC(a.value) = 1 
              THEN RTRIM(a.value)+'g'
              ELSE a.value
              END
     ELSE a.value
     END 

ISNUMERIC() returns 布尔值 0(非数字)或 1(数字),因此您当前的查询正在尝试比较字符串 a.value 到 int (01)