我有一个问题求助大家:怎么样将数据库表中的string转化为double
怎么样些程序,数据库为sql2000 。表定义为string,表中的数据很杂:有汉字,整数,小数小数点等
现在想吧它化为double,也就是说保留其中的数字。求助。谢谢!
怎么样些程序,数据库为sql2000 。表定义为string,表中的数据很杂:有汉字,整数,小数小数点等
现在想吧它化为double,也就是说保留其中的数字。求助。谢谢!
而提取数据的部分如下:
function GetNumber(const Str:string):double;
var i:integer; Numstr:string;
begin
for i:=1 to length(Str) do
begin
if str[i] in ['0'..'9','.'] then
Numstr:=Numstr+str[i];
end;
result:=strtoFloat(Numstr);
end;
var s1,ss:string;
i,j:integer;begin
SB_confirm.Enabled:=false;
SB_cancel.Enabled:=true;
CDload.Close;
CDload.CommandText:='select part_amount from '+DatabaseName+'SC_art_card ';
CDload.Open;
CDload.First;
while not CDload.Eof do
begin
try
s1:='';
ss:=CDload.fieldbyname('part_amount').asstring;
if length(ss)>1 then
begin
if (ord(byte(ss[length(ss)]))>=31) and (ord(byte(ss[length(ss)]))<= 39) or (ord(byte(ss[length(ss)]))= 46) then
j:=length(ss)-1
else
j:=length(ss);
for i:=1 to j do
begin
s1:=s1+chr(ord(byte(ss[i])));
end;
end;
//s1:=copy(ss,1,s1);
CDload.Edit;
CDload.fieldbyname('part_amount').asstring:=s1;
except
end;
CDload.Next;
end;
CDload.ApplyUpdates(-1);
我是这样写的,请大家看看有什么问题
var ss,s1,result:string;
i,j:integer;
ps: array[0..9] of char;
begin
SB_confirm.Enabled:=false;
SB_cancel.Enabled:=true;
CDload.Close;
CDload.CommandText:='select part_amount from '+DatabaseName+'SC_art_card ';
CDload.Open;
CDload.First;
while not CDload.Eof do
begin
try
s1:='';
ss:=CDload.fieldbyname('part_amount').asstring;
if length(ss)>1 then
begin
for i:=1 to length(ss) do
if ((ss=ps)or (pos(',',ss)>0)) then
s1:=s1+ss
else s1:=s1;
end;
result:=s1;
//s1:=copy(ss,1,s1);
CDload.Edit;
CDload.fieldbyname('part_amount').asstring:=result;
except
end;
CDload.Next;
end;
CDload.ApplyUpdates(-1);
end.
还有这种写法,大家看有什么问题。