我有以下 sql 查询,它与子查询交叉应用。
SELECT
pm.[FileName]
,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
,CAST(REPLACE([Message], 'Upload End. Total Row:', '') AS INT) AS row_count
FROM
dbo.ProductMaster pm
CROSS APPLY
(SELECT TOP 30 *
FROM dbo.ActivityLog lo
WHERE [Message] like 'Upload End%'
AND lo.[FileName] = pm.[FileName]
ORDER BY ActivityDate DESC) AS s
它运行良好,但如果我删除,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
选择中的第二个表达式(),我会收到以下错误
消息 245,级别 16,状态 1,行 1
将 varchar 值“上传开始”转换为数据类型 int 时转换失败。
子查询中的 where 子句应明确排除 Message 为“Upload Start”的所有行,但为什么会出现此错误。我没有CROSS APPLY
正确使用吗?