Announcement

Collapse
No announcement yet.

von varchar zahl abfragen

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

  • von varchar zahl abfragen

    gibt's überhaupt eine funktion im SQL Server wo ich von varchar zahl abfragen
    zB 'EK+10' und als rezultat kriege ich einen int mit 10 ???

  • #2
    Hallo,

    ja - über die Funktion <b>CAST</b> des MS SQL Server ist das möglich, wie das folgende Beispiel zeigt. Zuerst lege ich eine Testtabelle an:

    <pre>

    USE tempdb
    GO
    CREATE TABLE Marek(
    RecID INTEGER NOT NULL IDENTITY PRIMARY KEY,
    Wert VARCHAR(10) NOT NULL)
    GO
    INSERT INTO Marek (Wert) VALUES ('5');
    INSERT INTO Marek (Wert) VALUES ('10');
    GO

    </pre>

    Dann kann ich den als VARCHAR vorliegenden "Zahlen" ein Wert hinzuaddieren:

    SELECT CAST(Wert AS INTEGER) + 10 AS Ergebnis FROM Mare

    Comment


    • #3
      Ich glaube ich habe mich falsch ausgedruckt, ich habe in varchar ek+10 und will nur zehn raus holen und zwar in int. Das Problem ist manchmal kommt ek+10 manchmal ek+100000 us

      Comment


      • #4
        WEnn die Zahl im String immer an derselben Stelle beginnt (in deinem Beispiel immer an der 4. stelle ) kann man mit Hilfe der String-Operation den Wert in einen eigenen String speichern und diesen dann wie Andreas gezeigt hat casten. Dann hast du einen INT. Wie die Funktionen in SQL-Server heissen, weiss ich nicht, aber das Handbuch wird diese Im Kapitel Datentypen sicher erwaehnen.
        Steht die Zahl im String an verschiedenen Stellen, wird es schwieriger. Dann muesste man alles aus dem String entfernen, was im ASCII-Bereich der Buchstaben liegt. Dann bleiben die Ziffern uebrig, die man dann wieder casten kann. Dazu braucht es dann aber eine Prozedur, die das erledigt.

        Generell waere es aber besser Tabellenspalten zu verwenden, die NICHT aus zusammengesetzten Inhalten bestehen. Wenn EK in einer Spalte und die Zahl in einer weiteren Spalten stehen wuerden, haette man das Problem nicht

        Comment


        • #5
          <I>Generell waere es aber besser Tabellenspalten zu verwenden, die NICHT aus zusammengesetzten Inhalten bestehen. Wenn EK in einer Spalte und die Zahl in einer weiteren Spalten stehen wuerden, haette man das Problem nicht.<I>
          Stimmt, leider kriege ich so einen s..... Format geliefert ;(
          Und die Zahl steht leider auf verschiedenen Stellen ;(
          Vielen Vielen Dan

          Comment


          • #6
            Hallo,<BR><BR>dann wird dir wohl nicht anderes übrig bleiben und den String von links nach rechts nach den Strings '0'-'9' zu durchsuchen. Problematisch dabei könnten Tausendertrennzeichen und Nachkommastellen sein, falls so etwas auftritt. Theoretisch könnte es ja auch zwei Zahlen in diesem String geben, dann hast du das nächte Problem...:-(.<BR>Wenn das alles nicht zutrifft, dann gibt dir das vielleicht eine Anregung...:
            <PRE>
            Alter Function dbo.ExtractInteger(@vcStr varchar(100))
            returns Integer
            as
            begin
            declare
            @iZ Integer
            ,@cC as Char(1)
            ,@vcResult Varchar(100)
            ,@iResult Integer
            --
            set @vcResult = ''
            set @iZ = 1
            --
            while @iZ <= len(@vcStr)
            begin
            set @cC = substring(@vcStr, @iZ, 1)
            if @cC >= '0' and @cC <= '9' set @vcResult = @vcresult + @cC
            set @iZ = @iZ + 1
            end
            --
            set @iResult = cast(@vcResult as Integer)
            return(@iResult)
            end
            --
            print dbo.ExtractInteger('Das ist der 1500ste Test')
            --1500
            </PRE>Viele Grüße Ola

            Comment

            Working...
            X