Witam,
Mam pytanie o sposób działania joina.
Mam tabelę Table_1:
D1 D2
123 NULL
1a3 NULL
35s NULL
tg45 NULL
Jeżeli zrobię takie zapytanie:
select *
from Table_1 A
inner join (
select *
from Table_1 B
where
SUBSTRING(B.D1,len(B.D1)-1,100) NOT LIKE '%[^0-9]%') C
on A.D1=C.D1
WHERE convert(int,(SUBSTRING(A.D1,len(A.D1)-1,100)))<25;
Otrzymuję w wyniku jeden rekord
123 NULL 123 NULL
Jest OK.
Jeżeli zmienię right join na inner join to otrzymuję błąd:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value 'a3' to data type int.
Możecie mi to wytłumaczyć dlaczego tak się dzieje?