私は奇妙な行動を観察しています。to の部分文字列の変換に関連する次のコードは正常nvarcharにtinyint動作します。
DECLARE @s nvarchar(50) = N'Line 1'
DECLARE @n tinyint = SUBSTRING(@s, 6, 10)
SELECT
        N'Line 1' AS explicit_nvarchar,
        @s AS nvarchar_variable,
        SUBSTRING(@s, 6, 10) AS nvarchar_substring
        , @n AS tinyint_var_converted_earlier
        , CAST(SUBSTRING(@s, 6, 10) AS tinyint) AS cast_sub_var
        , CAST(SUBSTRING(N'Line 1', 6, 10) AS tinyint) AS cast_nvarchar_substr
Microsoft SQL Server Management Studio で次の出力を確認できます。
.
SELECTただし、コメント行のコメントが解除されている場合、表からの操作を試みるコードは失敗します。
Select 
    [order].[identifier] As [order_identifier],
    [plan_data].[starts_on] As [from],
    [plan_data].[ends_on] As [to],
    [workplace].[identifier] AS line_identifier,
    SUBSTRING([workplace].[identifier], 6, 10) AS line_no_str
    --, CAST(SUBSTRING([workplace].[identifier], 6, 10) AS int) AS line_no
From 
    ...
コメント行で...

tinyintしかし、コメントされていない行で(またはへの変換のための両方int)...

更新:奇妙です。すべての行に含まれているかどうかを確認するために、WHERE に最後の行を追加しました。'Line...
Where
    [plan].[identifier] = @lPlanIdentifier And
    (
        [plan_data].[starts_on] Between @fromUTC And @toUTC Or
        [plan_data].[ends_on] Between @fromUTC And @toUTC)
    AND LEFT([workplace].[identifier], 4) = N'Line'
...そして突然、コメントのない行でも機能します。問題の原因を特定するにはどうすればよいですか?
Update2: Hamlet Hakobyan の回答が公開されたとおりに正確に従うべきでした。テーブルの中を見ると、次のことがわかります。
