TSQL我在我的表中有一个column
文本(字符串),如19.5或7.14,但也只有19 或。分割字符串从
我想分割文本在2列 1用“。”之前的所有文本。和“1”之后的所有文字。 。
对于条目没有 a 。在字符串中,表格必须在第二列中有。所有数据也在之后。必须是2个字符长(填充0)。
例如19.5必须给出column1: 19 column2: 50
; 必须给column1:11 column2:00 任何人都可以帮我使用正确的tsql-code吗?
TSQL我在我的表中有一个column
文本(字符串),如19.5或7.14,但也只有19 或。分割字符串从
我想分割文本在2列 1用“。”之前的所有文本。和“1”之后的所有文字。 。
对于条目没有 a 。在字符串中,表格必须在第二列中有。所有数据也在之后。必须是2个字符长(填充0)。
例如19.5必须给出column1: 19 column2: 50
; 必须给column1:11 column2:00 任何人都可以帮我使用正确的tsql-code吗?
请尝试:
select
YourCol,
SUBSTRING(YourCol, 0, CHARINDEX('.', YourCol+'.')) Col1,
LEFT(SUBSTRING(YourCol, CHARINDEX('.', YourCol+'.')+1, 2)+'00', 2) Col2
from YourTable
或
select
YourCol,
CAST(YourCol AS INT) Col1,
RIGHT(PARSENAME(YourCol,1), 2) Col2
from
(
select
CONVERT(NUMERIC(18,2), YourCol) YourCol
from YourTable
)x
样品:
declare @tbl as table(txt nvarchar(10))
insert into @tbl values ('19.5'), ('11'), ('7.14')
select
txt,
SUBSTRING(txt, 0, CHARINDEX('.', txt+'.')) Col1,
LEFT(SUBSTRING(txt, CHARINDEX('.', txt+'.')+1, 2)+'00', 2) Col2
from @tbl
或
select
txt,
CAST(txt AS INT) Col1,
RIGHT(PARSENAME(txt,1), 2) Col2
from
(
select
CONVERT(NUMERIC(18,2), txt) txt
from @tbl
)x
select cast(cast(number as float) as int) column1,
right(cast(number as numeric(9,2)), 2) column2
from
(VALUES ('19.5'),('7.14'),('19'),('11')) t(number)
试试这个,
Declare @InputList VARCHAR(8000), @Delimiter VARCHAR(8000);
Declare @1stvalue nvarchar(20), @2ndValue Int;
Set @InputList = '19.5';
Set @Delimiter = '.';
set @1stvalue = (select RTRIM(LTRIM(SUBSTRING(@InputList,1,CHARINDEX(@Delimiter,@InputList,0)-1))));
set @2ndValue = (Select RTRIM(LTRIM(SUBSTRING(@InputList,CHARINDEX(@Delimiter,@InputList,0)+LEN(@Delimiter),LEN(@InputList)))))
set @2ndValue = (select case when @2ndValue < 10 then convert (varchar(10) ,convert (varchar(10),@2ndValue) + '0') else convert (varchar(10), @2ndValue) end);
SELECT @1stvalue AS Column1, @2ndValue AS Column2;
您可以使用此功能作为..