2016-07-19 4 views
-1

Ich verwende diesen CodeInsert in SQL Max +1 nur Zahlen (verhindern Zeichen)

(SELECT (MAX(CODE) +1 WHERE ISNUMERIC([code]) = 1) 

I bis max wollen +1 meine Nummern meiner Spalte zu verhindern Zeichen Zeichen nur.

+0

Sie können den Quellcode mit dem Symbolleisten-Button [Code Sample '{}'] (http://i.stack.imgur.com/VYd26.png) formatieren - ich habe es für Sie erledigt diesmal. –

Antwort

2

HINWEIS: DIESE FRAGE WURDE MYSQL BEZEICHNET, WENN DIESE ANTWORT VERBUNDEN WURDE.

Sie können substring_index() verwenden, um die Werte zu spalten und dann wieder vereinigen sie:

(SELECT CONCAT(SUBSTRING_INDEX(MAX(Code), '-', 1), '-', 
       SUBSTRING_INDEX(MAX(CODE), '-', -1) + 1 
      ) 
FROM . . . 
WHERE code LIKE '%NEW-1%' 
) 

Dies setzt voraus, dass die Platzhalter haben keine Bindestriche in ihnen, und dass die Werte nach den „1“ sind alle Zahlen .

Auch dies pad die Nummer nicht Nullen, aber das ist eine gute Idee für solche Codes - es stellt sicher, dass sie immer die gleiche Länge haben und dass sie richtig sortieren.

+0

Ich erhalte Fehler SUBSTRING_INDEX 'ist kein anerkannter Name der eingebauten Funktion. Vielleicht weil ich sql 2000 verwende – user6453809

+2

@ user6453809 Dann sage nicht, dass Sie MySQL verwenden ... –

+0

Entschuldigung. Oder wie kann ich Spalten mit Zeichen verhindern? Nur bis max. +1 zur letzten Spalte mit Zahlen – user6453809

0

Die MAX() function akzeptiert Ausdrücke, nicht nur Spaltennamen:

SELECT MAX(CASE ISNUMERIC(code) WHEN 1 THEN code END)+1 as next_code 
FROM (
    SELECT '15' AS code 
    UNION ALL SELECT ' 98 ' AS code 
    UNION ALL SELECT 'New-45' AS code 
) foo 
WHERE ISNUMERIC(code)=1; 
16 

(Link ist auf SQL Server 2005, Dokumentation für SQL Server 2000 sind offenbar nicht mehr auf der Linie, aber MAX() gehört zu SQL Standard sowieso.)