Re: Probleme beim Konvertieren von nvarchar Spalten in Int

Tech-Archive recommends: Fix windows errors by optimizing your registry

From: Goran Stevanovic (gstevanovic_at_yahoo.com)
Date: 08/26/04


Date: Thu, 26 Aug 2004 11:11:41 +0200


Mit Funktionen CONVERT und ISNUMERIC kannst Du die werte konvertieren und
sortieren:

 Select Wert
 From tmp
 Order By convert(int,Wert)
where isnumeric(Wert) = 1

mfg

Goran

"Andre Grumbach" <andre.grumbach@.itvt.nospam.de> wrote in message
news:eQmu$o0iEHA.3232@TK2MSFTNGP10.phx.gbl...
> Hallo NG,
> ich bin leider ein absoluter Anfänger in SQL und hoffe das es trotzdem
eine
> einfache möglichkeit für mein Problem gibt.
>
> Also ich habe folgendes Problem:
>
> Ich habe in einer Spalte (datentyp nvarchar) ein menge von Zahlen stehen
(in
> der Regel stehen da nur Zahlen keine Buchstaben).
> Nun will ich mir die höchste Zahl von diesen ausgeben, was jedoch leider
> dank dem nvarchar Datentyp der Spalte nicht geht da nun miene ausgabe wie
> folgt aussieht:
> 1
> 10
> 11
> 2
> 3
> 4
> 5
> 6...
>
> Die SQL Anweisung die ich dafür verwendet habe lautet wiefolgt:
> Select Wert
> From tmp
> Order By Wert
>
> Nun habe ich das selbe mit einer Spalte gemacht, die den Datentyp int hat,
> und oh Wunder, es funktioniert.
> Da ich nun aber das Problem habe, den Spaltentyp von nvarchar nach int
nicht
> ändern kann (wird von diesem System leider so vorgeschrieben), habe ich
mir
> überlegt in meiner SQL Anweisung einen Temoporäre Tabelle anzugeben die
als
> Spalte int hat.
> Nun sieht meine Prozedur wie folgt aus:
>
> Declare @tmptable Table (Wert int)
>
> Insert @tmptable Select Wert
> From tmp
>
> Select *
> From @tmptable
> Order By Wert DESC
>
> Diese Prozedur gibt mir auch die Werte zurück die ich brauche, jedoch gibt
> es auch hierbei ein kleines Problem, wenn rein zufällig einer in die
Spalte
> Wert statt einer Zahl einen Buchstaben rein schreibt, stürtzt die ganze
> Prozedur ab.
>
> Um nochmal genau zu beschreiben was ich haben will, da ich wohl etwas weit
> ausgeschweift habe, hier die Erkläung:
> Tabelle:
> Wert 100001,100005,100002,100006,100007,100008,100009,
> 900001,900002900005,900004....
>
> Meine SQL Anweisung soll mir nun alle Werte auslesen die als Wert größer
> bzw. gleich 900000, in der Reihenfolge: 900010 zu 900000, haben.
> Was im Prinzip mit einem Where gemacht werden kann, jedoch tritt auch hier
> das Problem auf des möglicherweise in diese Spalte aus versehen A oder
ein
> andere Buchstabe drin steht.
> Diese müsste irgendwie abgefangen werden, und zwar so, das diese Wert
> entweder garnicht übernommen wird oder z.B. 0 für diesen Wert da steht.
>
> Ich hoffe ich habe euch nicht zusehr verwirrt und enier von euch hat eine
> Lösung für mein Problem.
>
> MfG
> Andre Grumbach
>
>



Relevant Pages

  • Re: PostgreSQL Function mehrspaltig?
    ... Der liefert mir die Fehlermeldung, ... ' LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; ... Das letzte SELECT muss genau eine Spalte zurueckgeben. ...
    (de.comp.datenbanken.misc)
  • Re: Abfrage erstellen
    ... > from Tabelle ... SQL Server's Style 112 oder 126. ... SELECT ... OrderDate>= '19960701' ...
    (microsoft.public.de.sqlserver)
  • Re: ODBC-Treiber deinstallieren
    ... was unter SQL 2000 ... sollte sich der Wert ähnlich wie beim SQL Server 2000 verhalten. ... SELECT * FROM INFORMATION_SCHEMA.TABLES ...
    (microsoft.public.de.sqlserver)
  • Re: Attribute einer Relation über Systemtabellen abfragen???
    ... SQL Server 2005. ... kann ich mittels SELECT * FROM OPENQUERY (LinkedServer, ... MSysObjects WHERE ...') eine entsprechende Liste erhalten. ...
    (microsoft.public.de.access)
  • Export data auf lokale Datenbank
    ... Copy Objects) Copy Objects wähle und somit alle Eigenschaften (Primary Key, ... Identity usw.) auf der lokalen DB habe, kann ich nur noch über folgende SQL ... SELECT * FROM User.Table, im Web funktioniert auf SELECT * FROM Table. ...
    (microsoft.public.de.sqlserver)