Announcement

Collapse
No announcement yet.

Erhöhen eines String wie a1..a2 um 1

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Erhöhen eines String wie a1..a2 um 1

    Hallo,

    wer könnte mich helfen ?
    Ich möchte in eine Spalte "Anwendung" Zeile mit Zeile das folgende Daten eingeben:
    Zeile 1 a1
    Zeile 2 a2
    .
    .
    Zeile 100 a100

    heist das a1 um 1 erhöht werden soll

    Dafür verwende ich folgenden SQL Statament:
    SELECT 'a' + STR(MAX(SUBSTRING(Anwendung, 2, 5)) + 1) AS Anw
    FROM Anwendung

    allerdings die Rückgabe sieht so aus 'a 2' mit zu viele Leerzeichen

    Jetzt die 2 Fragen:
    1. Wie bekommen ich einen 'a2' ohne Leerzeichen??
    2. Bei einen "order by" anwendung das Ergebnis sollte dies liefern
    a1
    a2
    .
    a9
    a10
    a11

    Danke im voraus.

  • #2
    Hallo,

    Wie bekommen ich einen 'a2' ohne Leerzeichen??
    [highlight=SQL]
    SELECT 'a' + LTRIM(STR(MAX(SUBSTRING(Anwendung, 2, 5)) + 1)) AS Anw
    FROM Anwendung
    [/highlight]

    Comment


    • #3
      Super Danke .Es hat geklappt.

      Allerdings die zweite Frage nach der "Order by" muss ich noch weiter suchen. Nach der a1, kommt a10 und danach a2, a3 usw.....

      Aber trotzdem Danke noch mal .

      Comment


      • #4
        Hallo,

        Allerdings die zweite Frage nach der "Order by" muss ich noch weiter suchen
        hier kommt ein Lösungsvorschlag für das Sortier-Problem: Zuerst wird nach der Anzahl der Stellen sortiert, dann nach dem Inhalt der Spalte.

        [highlight=SQL]
        USE tempdb
        GO
        CREATE TABLE dbo.Anwendung
        (
        id INT NOT NULL IDENTITY PRIMARY KEY,
        wert VARCHAR(9) NOT NULL
        )
        GO
        INSERT INTO dbo.Anwendung (wert) VALUES ('a1')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a102')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a100')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a101')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a99')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a2')
        INSERT INTO dbo.Anwendung (wert) VALUES ('a9')
        GO
        SELECT
        *
        FROM
        dbo.Anwendung
        ORDER BY
        LEN(wert), wert;
        [/highlight]
        Ergebnis:
        Code:
        id          wert
        ----------- ---------
        1           a1
        6           a2
        7           a9
        8           a53
        5           a99
        3           a100
        4           a101
        2           a102

        Comment

        Working...
        X