Hallo allemaal,
Of het aan SQL Server 2008 kan liggen, weet ik niet, maar ik liep laatst tegen iets raars aan. Althans, iets werkte niet zoals ik het zou verwachten. Hier is in het kort de situatie:
Tabel A: bevat een kolom 'ID' die is ingesteld als int. Deze kolom bevat (dus) alleen gehele getallen.
Tabel B: bevat een kolom 'project' die is ingesteld als nvarchar(20). Deze kolom bevat zowel cijfers als letters, maar is nooit NULL (hooguit staat er '')
Om te kijken welke projectnummers van tabel A ik óók in tabel B kan vinden, gebruikte ik deze query:
select ID from A where ID IN (select cast(project as int) from B where IsNumeric(project) = 1)Als ik alleen de subquery uitvoer, krijg ik inderdaad alleen de projecten die puur alleen een nummer hebben als aanduiding, dus dat werkt.
Maar als ik de volledige query uitvoer, krijg ik foutmeldingen die erop duiden dat de niet-numerieke projectnummers uit de B-tabel tóch worden meegenomen!
Ik heb er uiteindelijk maar omheen gewerkt, door de numerieke projectnummers in een tijdelijk tabelletje te stoppen, en die tijdelijke tabel in de subquery gebruikt.
Maar hoe kan dit nou?
Groeten,
Ronald