I'm losing my mind again.
I have a query that returns three rows. When I include a Where clause that specifies the ID of those rows, it throws an error about invalid length parameter passed to a Left or Substring function.
SELECT
P.PodrobnostiAutoID, P.AkcesAutoID
FROM dbo.Podrobnosti P
LEFT JOIN dbo.vwFirstSynonymika S ON P.PodrobnostiAutoID = S.PodrobnostiAutoID
INNER JOIN [dbo].[Katalogy] ('Z') Ltrs on Ltrs.EvidenceLetter = P.EvidenceLetter
INNER JOIN dbo.Akces A ON P.AkcesAutoID = A.AkcesAutoID
LEFT JOIN RO.vwNejnovejsiInventarizaceNeboPresun vwNINP ON P.PodrobnostiAutoID = vwNINP.PodrobnostiAutoID
LEFT JOIN dbo.DepSuplik DS ON vwNINP.DepozitarAutoID = DS.DepozitarAutoID
LEFT JOIN dbo.TableOfLokalitas tL ON P.LokalitaAutoID = tL.LokalitaAutoID
LEFT JOIN dbo.Taxonomy T ON P.TaxonAutoID = T.TaxonAutoID
LEFT JOIN dbo.StratigrafieChrono StCh ON P.StratigrafieChronoID = StCh.StratigrafieChronoID
LEFT JOIN dbo.StratigrafieLito StL ON P.StratigrafieLitoID = StL.StratigrafieLitoID
LEFT JOIN (Select EvidenceLetter, EvidenceNumber, cnt CntPrilohy From [RO].[vwFTDruhaEvidence]) PDE On P.EvidenceLetter = PDE.EvidenceLetter Collate Czech_CI_AS AND P.EvidenceNumber = PDE.EvidenceNumber
LEFT JOIN dbo.TableOfTyps tT ON P.TypAutoID = tT.TypAutoID
LEFT JOIN dbo.Lidi L ON vwNINP.ClovekAutoID = L.ClovekAutoID
Where P.PodrobnostiAutoID IN (3171002,3171025,3172058)
it returns these three rows when I leave off the Where clause, but throws the error when I include it.
3171002 20994
3171025 20994
3172058 20994
The IDs are exactly those in the returned set. Does this make any sense to anyone? Some of the joins are to other tables, some are to views or table functions.