Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname (https://www.delphipraxis.net/170567-select-%2A-intfieldname-%3D-0-intfieldname-null-newfieldname.html)

RSE 24. Sep 2012 08:37

Datenbank: interbase • Version: 6.1 • Zugriff über: sql

Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Hallo,

ich möchte ein zusätzliches boolsches Feld selektieren, etwa so:
Code:
SELECT *, ((INTFIELDNAME = 0) OR (INTFIELDNAME IS NULL)) AS NEWFIELDNAME
Geht so etwas? Wie ist die korrekte Syntax? Stringkonkatenation mehrerer Konstanten und Felder und Rückgabe als neues Feld geht ja auch auf diese Weise...

jobo 24. Sep 2012 08:48

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Zitat:

Zitat von RSE (Beitrag 1184118)
Hallo,

ich möchte ein zusätzliches boolsches Feld selektieren, etwa so:
Code:
SELECT *, ((INTFIELDNAME = 0) OR (INTFIELDNAME IS NULL)) AS NEWFIELDNAME
Geht so etwas? Wie ist die korrekte Syntax? Stringkonkatenation mehrerer Konstanten und Felder und Rückgabe als neues Feld geht ja auch auf diese Weise...

Interbase müsste DECODE kennen:
Code:
SELECT *, DECODE(INTFIELDNAME, 0, NewValue,
                               NULL, AnotherNewValue,
                               ElseValues) AS NEWFIELDNAME
   from ...

RSE 24. Sep 2012 09:06

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Zitat:

Zitat von jobo (Beitrag 1184120)
Interbase müsste DECODE kennen

Tut es leider nicht.

DeddyH 24. Sep 2012 09:15

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Geht es mit CASE?
SQL-Code:
CASE IntFeld WHEN NULL THEN 0 ELSE IntFeld END

mkinzler 24. Sep 2012 09:21

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
DECODE(); IIF(); NullIf(); COLAESCE() usw. wurden alle erst in FireBird eingeführt
Möglichweise mit einer UDF-Bibliothek oder man nimmt eine Case..when

vagtler 24. Sep 2012 09:22

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Delphi-Quellcode:
select case when (intfieldname is null) or (intfieldname = 0) then 0 else 1 end as newfieldname

RSE 24. Sep 2012 09:29

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Zitat:

Zitat von vagtler (Beitrag 1184129)
Delphi-Quellcode:
select case when (intfieldname is null) or (intfieldname = 0) then 0 else 1 end as newfieldname

Ich probiere das im IBExpert SQL-Editor aus. Der meckert hier schon am "when" rum: Token unknown.
Zitat:

Zitat von DeddyH (Beitrag 1184126)
Geht es mit CASE?
SQL-Code:
CASE IntFeld WHEN NULL THEN 0 ELSE IntFeld END

Hier der gleiche Fehler beim Feldnamen nach dem case.

Ich hätte nicht gedacht, dass das für SQL eine so schwierige Aufgabe ist. Ich werde die Frage hiermit als beantwortet werten und das anders lösen. Trotzdem vielen Dank an alle Beitragenden.

ibp 24. Sep 2012 12:09

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
wie wäre es mit einem IB Update. Interbase liegt nun mittlerweile in Version XE3 vor, da hat sich einiges getan. Habe auch irgendwann mal den Schritt getan und bin von IB7 weg zu XE, erleichtert einiges!

mkinzler 24. Sep 2012 12:10

AW: Select *, ((intfieldname = 0) or (intfieldname is null)) as newfieldname
 
Oder hlt ein Update auf FireBird. Auch hier wurde viel Neues hinzugefügt und Vorhandenes optimiert/fehlerbereinigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz