AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL SELECT mit IF ?
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL SELECT mit IF ?

Ein Thema von static_cast · begonnen am 21. Dez 2004 · letzter Beitrag vom 21. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#1

MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 14:35
Hi,

habe ein prob bei einem MySQL Statement, ich möchte einen SELECT auf eine Tabelle machen wo Spalten leer oder null sein können, aber in meinem Fall eher leer also ''.

Mein Bsp.:

z.B. die Spalten: NAME FOO BAR MAIL und DATUM nun folgendes Statement "SELECT * FROM tabelle", ABER ich möchte das er wenn MAIL = '' ist dort 'No Mail' in die Spalte packt beim Result!

Hab ich etwas in der MySQL Doku gelesen und was über IF gefunden.

Kam ich also auf die Idee:
Code:
SELECT * IF(mail='',mail,'No Mail') FROM images
Das geht aber nicht!

Hoffe ihr kömmt mir helfen,
Gruss Daniel
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 14:42
select ifnull(mail, 'No Mail') from images
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Maa83

Registriert seit: 7. Nov 2002
220 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 14:43
im Select Statement kannst du Case benutzen:

SELECT *, CASE WHEN mail='' THEN 'No Mail' ELSE mail END AS mail
FROM images

statt * alle Felder bis auf Mail aufzählen!

oh... Stevie war schneller und mit einer anderen Idee
Martin
  Mit Zitat antworten Zitat
PRehders

Registriert seit: 31. Okt 2003
Ort: Hamburg
42 Beiträge
 
#4

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 14:50
Hallo,

der SQL-Standard sieht hierfür die Funktion COALESCE vor; diese gibt aus den übergebenen (beliebig vielen) Parametern den ersten zurück, der nicht NULL ist:

select COALESCE (mail, 'no mail')... Bei einer eventuellen Umstellung auf einen andere DB hast du dann eine Baustelle weniger!

Noch'n Tipp: Lieber immer alle gewünschten Felder aufzählen statt select *, das kann bei Struktur-Änderungen recht unangenehm werden...

Gruß

Peter
Peter Rehders
Man sollte niemanden ernst nehmen, der sich ernst nimmt.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#5

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 14:53
Hey danke euch zwei, geht wunderbar!

Hab es jetzt so, da konnte ich ja gleich noch die abfrage auf NULL mit einbaun =)
SQL-Code:
SELECT idx, sortkey, filename, hashname, hash, owner,
CASE WHEN (
mail = ''
)
OR (
mail = NULL
)
THEN 'No Mail'
ELSE mail
END AS mail, description, deletekey, size, uploadtime, ip, listingkey, insertmode
FROM images
Aber muss ich wirklich alle Felder auflisten? Wie läßtig wird das erst wenn ich mehr habe als die paar? Ohwei...

//Edit: Danke PRehders, das ist ja noch Einfacher
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#6

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 15:01
Naja... irgendwie geht das mit dem COALESCE gar nicht die Felder werden trozdem als leer zurückgeliefert, kann es sein das das nur bei NULL Feldern anwendbar ist?

SELECT idx, sortkey, filename, hashname, hash, owner, COALESCE( mail, 'No Mail' ) , description, deletekey, size, uploadtime, ip, listingkey, insertmode FROM images
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 15:06
Zitat von static_cast:
ich möchte einen SELECT auf eine Tabelle machen wo Spalten leer oder null sein können, aber in meinem Fall eher leer also ''.
'' <> NULL !!!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
PRehders

Registriert seit: 31. Okt 2003
Ort: Hamburg
42 Beiträge
 
#8

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 15:12
Hallo,

da hatte ich wohl nicht so ganz geschnallt...

COALESCE bearbeitet NULL-Werte; wenn bei dir aber ein leerer String drinsteht, ist dies natürlich nicht NULL und er bringt den Feldwert raus.
Eine solche Datenkonstellation sollte man aber tunlichst beim Befüllen der DB vermeiden, denn wenn das Feld leer ist, ist doch wohl eigentlich NULL gemeint...

Aber dann musst Du es wohl doch mit den anderen Konstrukten probieren.

Gruß

Peter
Peter Rehders
Man sollte niemanden ernst nehmen, der sich ernst nimmt.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#9

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 15:24
Zitat von Stevie:
Zitat von static_cast:
ich möchte einen SELECT auf eine Tabelle machen wo Spalten leer oder null sein können, aber in meinem Fall eher leer also ''.
'' <> NULL !!!
Das weiß ich wohl das NULL != '' ist, deswegen steht es da auch extra erwähnt "leer oder null sein können, aber in meinem Fall eher leer"! Wer lesen kann ist klar im Voteil *g*

Zitat von PRehders:
Eine solche Datenkonstellation sollte man aber tunlichst beim Befüllen der DB vermeiden, denn wenn das Feld leer ist, ist doch wohl eigentlich NULL gemeint...
Naja kann ich mich ja wohl kaum gegen wehren, wenn im Eingabefeld der Webform das Feld für die Mail vom User leer gelassen wird, ist es halt einfach leer aber nicht NULL.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: MySQL SELECT mit IF ?

  Alt 21. Dez 2004, 15:30
Das war auch eher an die anderen gerichtet, die - wie ich - auf der Null-Schiene waren.

Du könntest also über einen Standardwert das (Nicht-)Befüllen mit NULL verhindern und dann das Case-Konstrukt in der Abfrage benutzen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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