AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

Ein Thema von BlueStarHH · begonnen am 12. Sep 2023 · letzter Beitrag vom 14. Sep 2023
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#1

Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 12. Sep 2023, 16:31
Datenbank: Firebird • Version: 3.x • Zugriff über: IBDAC
Hallo,

ich brauche eine SQL-Abfrage, die true zurückgibt, wenn es in einer Tabelle einen Namen NICHT gibt UND die Tabelle NICHT leer ist. Sonst möchte ich false haben. Ich habe diese Abfrage:

Code:
select count(*) = 0 as res from MyTable where Name like '%XYZ%'
Wie bringe ich den zweiten Part ("UND die Tabelle NICHT leer ist") dort unter?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 12. Sep 2023, 16:51
wenn es in einer Tabelle einen Namen NICHT gibt
Das LIKE bedeutet aber eigentlich, dass die Zeichenfolge in keinem Name-Feld der Tabelle als Substring auftaucht. Also nicht nur kein 'Meier', sondern auch kein 'Meierling'. Ist das so gewollt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#3

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 12. Sep 2023, 17:20
Sowas?
SQL-Code:
select (sum(Anzahl) = 0 and sum(leer) <> 0) as res from (
  select count(*) as Anzahl, 0 as leer from MyTable where Name like '%XYZ%'
  union all
  select 0 as Anzahl, count(*) as leer from MyTable
)
oder ein bisserl kürzer:
SQL-Code:
select coalesce((select first 1 1 from MyTable where Name like '%XYZ%'),0) = 0
   and coalesce((select first 1 1 from MyTable),0) <> 0 as Res
from rdb$database
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 12. Sep 2023, 19:50
True, wenn irgendwo nicht drin
SQL-Code:
select count(*) > 0 as res from MyTable where not (Name like '%XYZ%')
select count(*) > 0 as res from MyTable where Name not like '%XYZ%
select distinct true as res from MyTable where Name not like '%XYZ%'
Dann noch die erwähnte sache bezüglich LIKE und %

Sowie, kennt Interbase auch ein iLIKE?
Weil wegen Groß-/Kleinschreibung.
SQL-Code:
select distinct true as res from MyTable where Name not ilike '%XYZ%
select distinct true as res from MyTable where upper(Name) not like '%XYZ%'
$2B or not $2B

Geändert von himitsu (12. Sep 2023 um 19:53 Uhr)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
599 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 13. Sep 2023, 19:02
Sowie, kennt Interbase auch ein iLIKE?
Das nicht, aber man kann ja immer COLLATE angeben für "Groß/Klein ignorieren" oder "Akzente ignorieren". Zudem gibt es "CONTAINING", das ist case insensitive:
Code:
select distinct true as res from MyTable where Name not containing 'xyz'
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 13. Sep 2023, 20:08
Sowie, kennt Interbase auch ein iLIKE?
Das nicht
Wieso nicht: https://docwiki.embarcadero.com/Inte.../en/Using_LIKE
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 14. Sep 2023, 09:46
Danke an alle, ich mache es jetzt so wie in Beitrag #3 beschrieben. (Das "like" ist hier nicht das Problem. Es ist schon richtig, dass es verwendet wird. Durch Verwendung einer CI-COLLATE ist es auch case insensitive.)
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 14. Sep 2023, 09:55
True, wenn irgendwo nicht drin
SQL-Code:
select count(*) > 0 as res from MyTable where not (Name like '%XYZ%')
select count(*) > 0 as res from MyTable where Name not like '%XYZ%
select distinct true as res from MyTable where Name not like '%XYZ%'
Danke, aber das ist nicht die Lösung für meine Fragestellung. Das Count zählt alle Datensätze, die nicht mit %XYZ% übereinstimmen. Wenn ich nun einen Datensatz mit %XYZ% habe und einen ohne %XYZ%, wird true zurückgegeben. Ich möchte aber prüfen: "Abfrage soll true geben, wenn Name in der gesamten Tabelle nicht exisitert und Tabelle nicht leer ist". Die Lösung steht in Beitrag #3.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Abfrage soll true geben, wenn Name nicht da ist und Tabelle nicht leer ist

  Alt 14. Sep 2023, 10:24
Mir kam so vor, als wenn es deiner Überschrift entspricht.

True, wenn nicht da und Tabelle nicht leer,
also wenn mindestens ein


OK, kann man auch anders verstehen.
* Anzahl der gibt es Datensätze, wo es nicht drin ist
* ist es überhaupt nicht da, in allen Datensätze
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:53 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