Hallo SQL-Experten,<BR><BR>ich bin wirklich dem Verzweifeln nahe, hier also das Problem:<BR>In einer Tabelle sind in einer Spalte Werte abgelegt, die eigentlich verschiedenen Typen angehören. Leider habe ich noch keinen SQL-Server 2000, der den Typ Variant unterstützt. Ich helfe mir also dadurch, dass ich die Werte in VarChar konvertiere, so mit der eigentlichen Typangabe ablege und mir dann ein View bastel, für die Rückkonvertierung. Soweit so gut. Möchte ich jetzt aber filtern, dann gibt es einen Konvertierungsfehler - warum?<BR>Ich gebe zu, das war alles ein wenig unverständlich. Hier ein Beispiel, damit jeder das nachvollziehen kann:,<BR><BR>
create table a (a int, b varchar(1)) --Eine Tabelle<BR>
insert into a values(1,'1')<BR>
insert into a values(2,'A')<BR>
insert into a values(1,'2')<BR>
<BR><BR>
create table b (a int, b varchar(1)) --noch eine Tabelle zur Typunterscheidung<BR>
insert into b values(1,'X')<BR>
insert into b values(2,'Y')<BR>
<BR><BR>
create view va as --beide Tabellen zu einem View verschmelzen<BR>
select b.b as typ, a.b as wert<BR>
from a<BR>
inner join b on b.a = a.a<BR>
<BR><BR>
create view va2 --Alle X'n sind int -> also cast...<BR>
as<BR>
select cast(wert as int) as wert from va where typ = 'X'<BR>
<BR><BR>
select wert from va2 --funktioniert !!!<BR>
select wert from va2 where wert = 1 --Fehlermeldung !!!<BR><BR>
Wie kann ich dieses Problem lösen - direkt oder durch die Brust ins Auge?<BR>Schon jetzt vielen Dank für die Mühe!!!<BR><BR>Olle
create table a (a int, b varchar(1)) --Eine Tabelle<BR>
insert into a values(1,'1')<BR>
insert into a values(2,'A')<BR>
insert into a values(1,'2')<BR>
<BR><BR>
create table b (a int, b varchar(1)) --noch eine Tabelle zur Typunterscheidung<BR>
insert into b values(1,'X')<BR>
insert into b values(2,'Y')<BR>
<BR><BR>
create view va as --beide Tabellen zu einem View verschmelzen<BR>
select b.b as typ, a.b as wert<BR>
from a<BR>
inner join b on b.a = a.a<BR>
<BR><BR>
create view va2 --Alle X'n sind int -> also cast...<BR>
as<BR>
select cast(wert as int) as wert from va where typ = 'X'<BR>
<BR><BR>
select wert from va2 --funktioniert !!!<BR>
select wert from va2 where wert = 1 --Fehlermeldung !!!<BR><BR>
Wie kann ich dieses Problem lösen - direkt oder durch die Brust ins Auge?<BR>Schon jetzt vielen Dank für die Mühe!!!<BR><BR>Olle
Comment