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 (0
或 1
)
我正在 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 (0
或 1
)