サブクエリとクロス適用する次の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
正常に動作しますが、select の 2 番目の式 ( ) を削除する,REPLACE([Message], 'Upload End. Total Row:', '') cnt_char
と、次のエラーが発生します。
メッセージ 245、レベル 16、状態 1、行 1
varchar 値 'Upload Start' をデータ型 int に変換するときに変換に失敗しました。
サブクエリの where 句は、メッセージが「アップロード開始」であるすべての行を明確に除外する必要がありますが、なぜこのエラーが発生するのですか? CROSS APPLY
を正しく使用していませんか?