mcclane
Goto Top

Syntax Frage

Hallo kann mir einer sagen was im folgenden SQL code 1=2 bedeutet??

INSERT INTO #gruppen SELECT '25 Jahre und jünger', 00, 25 FROM system.iota;
INSERT INTO #gruppen SELECT '26 - 30 Jahre', 26, 30 FROM system.iota;
INSERT INTO #gruppen SELECT '31 - 35 Jahre', 31, 35 FROM system.iota;
INSERT INTO #gruppen SELECT '36 - 45 Jahre', 36, 45 FROM system.iota;
INSERT INTO #gruppen SELECT '46 - 55 Jahre', 46, 55 FROM system.iota;
INSERT INTO #gruppen SELECT '56 - 65 Jahre', 56, 65 FROM system.iota;
INSERT INTO #gruppen SELECT '65 Jahre und älter', 65, 100 FROM system.iota;


select * from #gruppen
where gruppe = '25 Jahre und jünger' OR 1 = 2;


Danke
MCCLane

Content-Key: 65697

Url: https://administrator.de/contentid/65697

Printed on: April 26, 2024 at 22:04 o'clock

Member: SvenGuenter
SvenGuenter Aug 08, 2007 at 07:54:21 (UTC)
Goto Top
Interessant wäre es alle Attribute der Tabelle system.iota zu kennen. Wenn es dort ein Attribut mit dem Namen 1 gibt dann wird auch alles selectiert was den Wert 2 hat. Andersrum kann es sein das evtl irgendwo im statement noch ein UNION sitzt und je nachdem dieser mit eingebunden werden soll.

Gruß

Sven
Member: MCClane
MCClane Aug 08, 2007 at 07:56:30 (UTC)
Goto Top
also Hier die die tabelle


SELECT TOP 0
SPACE(20) "GRUPPE"
,CONVERT(0, SQL_INTEGER) "VON"
,CONVERT(0, SQL_INTEGER) "BIS"
INTO
#gruppen
FROM
system.iota;

ich sollte noch sagen das wenn ich anstatt 1=2 1=1 nehme er mir alles ausgibt und das erste where ignoriert
Member: SvenGuenter
SvenGuenter Aug 08, 2007 at 08:03:02 (UTC)
Goto Top
also wenn ich das statement richtig deute wird da eine temporäre tabelle erzeugt.
der space(20) macht leerzeichen vor der gruppe und nun wohl der clou in der where klausel. mit 1=2
werden die 26-30Jahre gruppe auch noch mit selectiert.

ich kenne die funktionalität der space() funktion nicht genau aber das würde diese klausel erklären.

bekommst du denn diese beiden gruppen selektiert wenn du das select * machst?

nachtrag
allerding fehlt mir da noch ein substring() ist das das ganze statement was dir zur verfügung steht?
Member: MCClane
MCClane Aug 08, 2007 at 08:07:51 (UTC)
Goto Top
25 Jahre und jünger 0 25

ist die Ausgabe bei 1=2

mich wundert es nur das wenn ich 1=1 mache alles selectiert wird???
Member: SvenGuenter
SvenGuenter Aug 08, 2007 at 08:14:35 (UTC)
Goto Top
dieses 1= ist das merkwürdige an der ganzen sachen. Ist da ein index drauf oder eine identity Spalte die dementsprechend gefüllt ist?

wenn die zweite bedingung erfüllt ist also 1=1 dann ist klar das der erste teil nicht mehr greift da die where bedingung or verknüpft ist. heißt alle anderen datensätze haben die bedingung das 1 = 1 ist.
Member: MCClane
MCClane Aug 08, 2007 at 08:20:59 (UTC)
Goto Top
Nein es ist keine Identity Spalte da und auch kein Index es ist aber eine Advantage Database Server Datenbank ob es da was spez. ist??

Das mit 1=1 habe ich geblickt das der dann alles ausgibt und dann die erste where bedingung wegfällt.
Member: MCClane
MCClane Aug 08, 2007 at 09:00:43 (UTC)
Goto Top
Also Chef war gerade da und hat mir erklärt was das 1 =2 für einen sinn hat.

War eigentlich kanns einfach ist aber so lang um es hier so erklären.

Ich danke allen Leuten.

trend kann geschlossen werden
Member: SvenGuenter
SvenGuenter Aug 08, 2007 at 09:05:30 (UTC)
Goto Top
Ja. Ist es. Ich bin von einer MS-SQL DB ausgegangen.

Schaust du am besten in die Doku von deiner DB nach oder hier http://devzone.advantagedatabase.com/dz/content.aspx?Key=1
oder hier
http://devzone.advantagedatabase.com/dz/content.aspx?key=3
da findest du eine sehr gute Doku dazu
Member: Desperado
Desperado Aug 08, 2007 at 18:31:20 (UTC)
Goto Top
ich nehme an, es wird gewollt eine temporäre tabelle erzeugt ohne daten aber mit der tabellenstruktur...

1=1 trifft immer zu
1=2 nie, also werden auch nie daten inserted