Meine Spalte Beispiel:Warum funktioniert mein Code nicht? (Unter Verwendung von Multi Ausdrücke + Guss + case)
(name) as varchar(50)
s01
s02
s16
ich bei der Verwendung von Fall und Guss erste fehlende panelname über 0 auch auswählen möchte (in meinem Beispiel wählt gewünscht wird ‚s03‘)
WITH cte AS(
SELECT name
FROM customers
UNION ALL
SELECT 0
)
SELECT CASE WHEN cast(min(right(name, 2) + 1) as varchar(50)) < 10 THEN 's0' ELSE 's' END +
cast(min(right(name, 2) + 1) as varchar(50))
FROM cte
WHERE NOT EXISTS (
SELECT name
FROM customers
WHERE cast(right(customers.name, 2) as varchar(50)) = cast(right(cte.name, 2) as varchar(50))+1)
Dieser Code funktioniert aber nur, wenn meine Tabelle null ist oder die Tabelle nur Zahlen enthält.
Beispiel meine Spalten in Namen-> Ergebnis wird
1 or 101
2 102
16 116
Aber S03 werden, wenn es Brief
example my columns in name
s01
s02
s016
Es funktioniert nicht enthalten. Ich erhalte eine Fehlermeldung: Die Konvertierung ist fehlgeschlagen, wenn der Varchar-Wert 's01' in den Datentyp int konvertiert wurde. Soll ich woanders nach Varchar werfen?
Irgendwelche Vorschläge? Oder ist es besser, anderen Code für das zu verwenden, was ich tun möchte? – user6615498
Bearbeiten Sie Ihre Frage, um die relevante Tabelle DDL und Beispieldaten als DML einzuschließen. –
Ich bearbeite meine Frage, um genauer zu sein. Irgendwelche Vorschläge? – user6615498