2017-06-26 4 views
0

Ich benutze Codeigniter Framework, und ich weiß nicht, warum ich Fehler in meiner Abfrage bekam. Wenn ich es im Abfrage-Generator navicat ausprobierte, wird meine Abfrage erfolgreich ausgeführt und gibt die maximale Anzahl meines Felds varchar zurück. Aber wenn ich versuchte, es in meinem Modell, es gibt mir Fehler:Fehler in meiner Abfrage den maximalen Wert eines Varchar bekommen

Ein Datenbankfehler aufgetreten

Fehlernummer: 1064

Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch, die für die richtige Syntax verwendet in der Nähe von ‚0‘ in Zeile 1

hier auf Ihre MariaDB Server-Version entspricht, ist meine Abfrage in Modell:

public function checkupID() { 
     $query = $this->db->query(' SELECT tbl_check_up.check_up_id FROM tbl_check_up ORDER BY substring_index(tbl_check_up.check_up_id, '-', 1) + 0, 
        substring_index(tbl_check_up.check_up_id, '-', -1) + 0 DESC LIMIT 1 '); 
     return $query->result(); 
    } 
+0

Ihre Syntax ist fehlerhaft. 'substring_index' gibt tatsächlich einen Teilstring und nicht nur den Index zurück. Sie können also 0 oder eine andere ganze Zahl nicht direkt hinzufügen. Bitte teilen Sie Ihre genaue Anforderung für die Abfrage, die Sie ausführen. –

+0

@KeyurPanchal Hallo Herr ... Ich möchte in Abfrage automatisch erhöhen, weil es prmary Schlüssel ist –

+0

Können Sie etwas beschreibender sein? –

Antwort

1

Vielleicht sind Sie auf der Suche für die Länge der ersten Teilkette (vor einem Strich) als die Reihenfolge?

SELECT tbl_check_up.check_up_id 
FROM tbl_check_up 
ORDER BY 
    length(substring_index(tbl_check_up.check_up_id, '-', 1)) 
LIMIT 1 
; 

Allerdings bin ich nicht sicher, was für den zweiten Teil der Bestellung von gedacht war.

+ EDIT, Korrektur. -1 ist als dritter Parameter für substring_index gültig

+0

Verwendung von -1 ** ist ** gültig als drittes Argument für 'SUBSTRING_INDEX()': [* "Wenn * count * negativ ist, wird alles rechts vom letzten Begrenzer (von rechts gezählt) zurückgegeben. "*] (https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index) –

+0

Oh. Vielen Dank. Gut zu wissen. –

+0

@Used_By_Already danke für Ihre Antwort. Warum gibt das 1-9 zurück? Herr .. bitte überprüfen Sie es .. Ich brauche die 1-10 –

Verwandte Themen