Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
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
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
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
<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
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