T-SQL WHERE Klausel Verwendung von Alias Namen nicht möglich

27/06/2008 - 15:06 von Rainer Kroos | Report spam
Hallo,
ist in der WHERE Klausel einer T-SQL (2005) Abfrage der Bezug auf den Alias
Namen eines Feldes nicht möglich oder bin ich nur zu doof dazu? Falls
letzteres der Fall ist, erbitte ich Hilfestellung zur Lösung meines Problems
a la Beispiel 2.

Beispiel 1 (funktioniert):
SELECT internalxmlblocks.value ('declare namespace
i5=http://mydom.com/schemas/20080627; (/i5:EndpointStudyRecord/i5:name)[1]',
'NVARCHAR(255)') AS XMLname

FROM abstractflexibleendpoint

WHERE internalxmlblocks.value ('declare namespace
i5="http://mydom.com/schemas/20080627";
(/i5:EndpointStudyRecord/i5:name)[1]', 'NVARCHAR(255)') LIKE 'Bio%'


Beispiel 2 (funktioniert nicht):
SELECT internalxmlblocks.value ('declare namespace
i5="http://mydom.com/schemas/20080627";
(/i5:EndpointStudyRecord/i5:name)[1]', 'NVARCHAR(255)') AS XMLname

FROM abstractflexibleendpoint

WHERE XMLname LIKE 'Bio%'



Msg 207, Level 16, State 1, Line 3

Invalid column name 'XMLname'.



Vielen Dank für jede Rückmeldung + schönes Wochenende.

Rainer Kroos
 

Lesen sie die antworten

#1 Christoph Ingenhaag
27/06/2008 - 15:38 | Warnen spam
Hi Rainer,

die WHERE-klausel kennt den Alias nicht. Daher die Fehlermeldung. Das Select
steht zwar am Anfang der Anweisung, wird aber nicht als Erstes verarbeitet:

Hier die logische Verarbeitungsreihenfolge im Groben:

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY

Daher kennt WHERE noch nicht den Alias, der im SELECT vergeben wird.

Vg
Christoph

"Rainer Kroos" wrote:

Hallo,
ist in der WHERE Klausel einer T-SQL (2005) Abfrage der Bezug auf den Alias
Namen eines Feldes nicht möglich oder bin ich nur zu doof dazu? Falls
letzteres der Fall ist, erbitte ich Hilfestellung zur Lösung meines Problems
a la Beispiel 2.

Beispiel 1 (funktioniert):
SELECT internalxmlblocks.value ('declare namespace
i5=http://mydom.com/schemas/20080627; (/i5:EndpointStudyRecord/i5:name)[1]',
'NVARCHAR(255)') AS XMLname

FROM abstractflexibleendpoint

WHERE internalxmlblocks.value ('declare namespace
i5="http://mydom.com/schemas/20080627";
(/i5:EndpointStudyRecord/i5:name)[1]', 'NVARCHAR(255)') LIKE 'Bio%'


Beispiel 2 (funktioniert nicht):
SELECT internalxmlblocks.value ('declare namespace
i5="http://mydom.com/schemas/20080627";
(/i5:EndpointStudyRecord/i5:name)[1]', 'NVARCHAR(255)') AS XMLname

FROM abstractflexibleendpoint

WHERE XMLname LIKE 'Bio%'



Msg 207, Level 16, State 1, Line 3

Invalid column name 'XMLname'.



Vielen Dank für jede Rückmeldung + schönes Wochenende.

Rainer Kroos





Ähnliche fragen