Ich habe eine komplexe Zeichenfolge, die wie folgt beginnt: SELECT COUNT(*) AS 'columnName' ...
. Das Ergebnis zeigt eine positive oder 0-Nummer an. Was ich will, ist, wenn es 0 ist, ich möchte string1
drucken (anstelle von 0) und wenn es höher als 0 ist, möchte ich string2
(anstelle dieser Zahl) drucken. Der Vorbehalt ist, dass ich keine bedingten Anweisungen, keine if
s oder case
s verwenden möchte. Ich habe über eine Ersatzfunktion nachgedacht, aber ich glaube nicht, dass es funktioniert. Danach könnte dann eine VIEW (virtuelle Tabelle zum Speichern der Ergebnisse?) Funktionieren? Ich möchte keine ursprünglichen Tabellendaten in irgendeiner Weise ändern, ich möchte nur die Ausgabe manipulieren. Ich kann es nicht herausfinden, ich bin ein SQL-Anfänger. Hilfe?MYSQL - Ersetzen Sie 0 mit einer Zeichenfolge und nicht 0 mit einer anderen Zeichenfolge in der SQL-Abfrageausgabe ohne Bedingungen
Antwort
select COALESCE((select 'string1' as s
from table1
having count(*) < 0)
,'string2')
Above Abfrage gibt string 1, wenn es keine Aufzeichnungen sind in der Tabelle sonst kehrt string 2
Dies ist genau das, was ich wollte.Ich wusste nicht über die 'COALESCE' Schlüsselwort.Danke! –
Dies ist keine Kritik an einem perfekt v Antwort, aber die Tatsache, dass dies das ist, was Sie wollten, scheint als ob es einen Fehler in der Prämisse der Frage gibt. @ RestlessC0bra, Sie scheinen nicht zu erkennen, dass dies * genau * das gleiche wie 'SELECT CASE WHEN ist (SELECT 1 AS s aus Tabelle1 mit COUNT (*) <0) ist nicht NULL THEN 'string1' ELSE 'string2' END; '(oder eine beliebige Anzahl ähnlicher Konstrukte). Es gibt keinen Grund, bedingte Ausdrücke zu vermeiden, da sie logisch gültig und in der Regel viel intuitiver sind, zB "SELECT IF (EXISTS (SELECT * FROM table1), 'string1', 'string2');' –
@ Michael-sqlbot Es gibt keine Fehler. Das ist was ich wollte und worüber ich geschrieben habe. Und ja, ich stimme zu. –
Der richtige Ansatz ist CASE
zu verwenden, aber es gibt auch andere Möglichkeiten:
select elt(1 + least(count(*), 1), 'string1', 'string2')
count(*)
fast nie 0
zurückgibt. Es gibt nur 0
, wenn es keine group by
ist und die Tabelle keine Zeilen (oder alle Zeilen wurden von der where
herausgefiltert.
- 1. Ersetzen Zeichenfolge mit einer anderen Zeichenfolge mit Regex
- 2. Drucken einer Zeichenfolge wie "Hallo {0}"
- 3. Python ersetzen Zeichenfolge (Groß- oder Kleinschreibung) mit einer anderen Zeichenfolge
- 4. Ersetzen Sie eine Zeichenfolge mit einer anderen, die Zeilenumbrüche
- 5. Ersetzen eines Zeichens in einer Zeichenfolge aus einer anderen Zeichenfolge mit demselben Zeichenindex
- 6. Ersetzen Sie eine Zeichenfolge in einer Textdatei
- 7. Ersetzen Teilstring Zeichenfolge in einer Tabelle mit Zeichenfolge in einer anderen Tabelle für eine ganze Spalte
- 8. Matching einer Zeichenfolge mit einer anderen Zeichenfolge mit PHP
- 9. Suchen Sie eine Zeichenfolge mit Klammern in einer anderen Zeichenfolge
- 10. Ersetzen Sie das letzte Komma in einer Zeichenfolge mit "und"
- 11. Wie die Zeichenfolge ohne 0 angezeigt wird 0
- 12. Sed und Ersetzen einer Zeichenfolge
- 13. Ersetzen einer Zeichenfolge in einem a-Tag mit einer anderen Zeichenfolge
- 14. Ersetzen Sie Werte in einer Zeichenfolge mit JavaScript
- 15. Benötigen Sie eine Zeichenfolge zu ersetzen, nachdem JavaScript-Countdown 0
- 16. Ersetzen Sie Buchstaben in einer Zeichenfolge mit Python
- 17. Testen, ob eine Zeichenfolge mit einer anderen Zeichenfolge beginnt oder mit einer anderen Zeichenfolge endet
- 18. Wie kann ich {0}, aber nicht {{0}} ersetzen?
- 19. Ersetzen mit Regex in einer Zeichenfolge Javascript
- 20. Zeichen einer Zeichenfolge in einer Liste ersetzen
- 21. Ersetzen Sie ein Zeichen in einer Zeichenfolge in C# basierend auf Position mit einer Zeichenfolge
- 22. Überprüfen Sie, ob ein Zeichen in einer Zeichenfolge eine 1 oder 0 ist 0
- 23. Elastische Suche kann nicht mit der Zeichenfolge "/ 0" gesucht werden.
- 24. mysql: Warum ist das Vergleichen einer 'Zeichenkette' mit 0 wahr?
- 25. Ersetzen Sie '-' durch '-' in einer JavaScript-Zeichenfolge
- 26. Ersetzen Sie HTML-Zeichenentitäten in einer Zeichenfolge
- 27. Umkehren einer '\ 0' terminierten C-Zeichenfolge an Ort und Stelle?
- 28. Regex mit einer Zeichenfolge oder nicht mit einer Zeichenfolge regex?
- 29. Java - Suchen und Ersetzen Teil einer Zeichenfolge
- 30. Ersetzen einer Zeichenfolge in DataBinder.Eval
Wenn Sie ein Anfänger sind, sollten Sie 'CASE' verwenden.Dies ist der richtige Ansatz.Zusätzlich gibt' count (*) fast nie 0. –
ich würde sagen, Ihre Anzahl zu varchar dann wenden Sie ersetzen wenn wirklich wollen, ersetzen – maSTAShuFu