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-ID: 65697

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

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

SvenGuenter
SvenGuenter 08.08.2007 um 09:54:21 Uhr
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
MCClane
MCClane 08.08.2007 um 09:56:30 Uhr
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
SvenGuenter
SvenGuenter 08.08.2007 um 10:03:02 Uhr
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?
MCClane
MCClane 08.08.2007 um 10:07:51 Uhr
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???
SvenGuenter
SvenGuenter 08.08.2007 um 10:14:35 Uhr
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.
MCClane
MCClane 08.08.2007 um 10:20:59 Uhr
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.
MCClane
MCClane 08.08.2007 um 11:00:43 Uhr
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
SvenGuenter
SvenGuenter 08.08.2007 um 11:05:30 Uhr
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
Desperado
Desperado 08.08.2007 um 20:31:20 Uhr
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