2016-05-07 7 views
2

Ich habe eine MySQL-Abfrage, die ich in Alpha Anywhere, einem Datenbank-App-Entwicklungstool, verwende. Hier ist die Abfrage:String zum Ergebnis von MySQL hinzufügen Count-Abfrage

Die Abfrage funktioniert gut, aber ich muss eine Zeichenfolge zum Ergebnis hinzufügen. Zum Beispiel, wenn die Abfrage 352,133 zurückgibt, würde ich gerne die Zeichenkette 'Total Records' hinzufügen, für ein Endergebnis von 352,133 Total Records.

Ich habe so gründlich wie möglich vor dem Verfassen dieser Frage gesucht. Ich habe einige Themen gefunden, die nah beieinander lagen, aber keine wirklich auf dem Punkt.

Antwort

1

ich in der Regel solche Dinge auf der Anwendungsseite bevorzugen, aber wenn Sie positiv es in der Abfrage zu tun haben, können Sie die concat Funktion:

SELECT CONCAT(COUNT(*), ' Total Records') AS Expr1 
FROM timelines 
WHERE CaseName = :whichcases AND 
     Custodian = :whichcustodians AND 
     Device = :whichdevices 
0

Sofort concat wie dies zu tun:

SELECT concat(Count(*), ' total records') AS Expr1 
FROM ... 

wird ein binäres Ergebnis in MySql Version < 5.5.3 (fiddle) geben. Siehe auch die 5.5 Dokumentation zu concat:

Gibt die Zeichenfolge zurück, die sich aus der Verkettung der Argumente ergibt. Kann ein oder mehrere Argumente haben. Wenn alle Argumente nicht-binäre Zeichenfolgen sind, ist das Ergebnis eine nicht binäre Zeichenfolge. Wenn die Argumente Binärzeichenfolgen enthalten, ist das Ergebnis eine Binärzeichenfolge. Ein numerisches Argument wird in die entsprechende Zeichenfolgenform konvertiert. Dies ist eine nicht-binäre Zeichenfolge ab MySQL 5.5.3. Vor 5.5.3 ist es eine binäre Zeichenfolge

NB: Die Geige das binäre Ergebnis zeigt, aber es läuft auf MySql 5.6.21. Sie werden wahrscheinlich auch für andere Versionen eine Lösung benötigen.

Eine Möglichkeit, dies zu umgehen, ist die Abfrage zu wickeln:

SELECT concat(Expr1, ' total records') AS Expr1 
FROM ( 
    SELECT Count(*) AS Expr1 
    FROM timelines 
    WHERE CaseName = :whichcases 
     AND Custodian = :whichcustodians 
     AND Device = :whichdevices 
) as sub 

Oder Sie CAST verwenden können:

SELECT concat(cast(count(*) as char), ' total records') as Expr1 
FROM timelines 
WHERE CaseName = :whichcases 
    AND Custodian = :whichcustodians 
    AND Device = :whichdevices 
+0

Vielen Dank, es funktioniert! – ChopOMatic

+0

Wenn Sie MySQL <= 5.5.3 verwenden, können Sie CAST verwenden: SELECT CONCAT (CAST (Count (*) as dec), 'Gesamtzahl der Datensätze') AS Expr1 FROM t; –

+0

Gern geschehen. Der binäre Rückgabewert beim sofortigen Ausführen des Concats ist ziemlich verwirrend. ;-) – trincot