Как удалить пробелы в строковом поле и вставить в тип данных float? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть поле varchar с некоторыми данными, и мне нужно привести эти значения и вставить в поле типа данных с плавающей запятой

create table #tableTest
(
    someData varchar(100) not null
);
insert into #tableTest(someData) values('5 215 243');


create table #tableFloat
(
    floatData float not null
);

insert into #tableFloat
select someData from #tableTest;

Я пробовал это:

insert into #tableFloat
select replace(someData, ' ', '') 
from #tableTest 

I, кромерезультат для таблицы #tableFloat имеет значения 5215243.00 путем удаления пробелов между ними

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Я знаю, что на этот вопрос ответили, но вот мое упрощенное решение (только один CAST и не требуется обрезка):

CREATE TABLE #tabletest  (somedata VARCHAR(100) NOT NULL); 
CREATE TABLE #tablefloat (FLoatdata FLOAT); 
INSERT INTO #tabletest   (somedata) VALUES ('  5 215 243  '); 

INSERT #tableFloat SELECT CAST(REPLACE(t.somedata,' ','') AS FLOAT) FROM #tabletest AS t;
1 голос
/ 03 июня 2019

Попробуйте

CREATE TABLE #tabletest 
  ( 
     somedata VARCHAR(100) NOT NULL 
  ); 

INSERT INTO #tabletest 
            (somedata) 
VALUES     ('5 215 243'); 

CREATE TABLE #tablefloat 
  ( 
     FLoatdata FLOAT
   ); 

INSERT INTO #tablefloat 
SELECT  LTRIM(RTRIM(REPLACE(somedata, ' ', ''))) AS someData --Replace space values and appy trim function to remove spaces either side
FROM   #tabletest; 

SELECT   CAST(CAST(CAST(FLoatdata AS INT) AS VARCHAR(20))+'.00' AS DECIMAL(20,2)) FloatToDecmialData -- display the value of float datatype by converting in to decimal
FROM   #tablefloat

Результат

data
----
5215243.00
...