繁体   English   中英

从列中拆分tsql中的字符串

[英]split string in tsql from column

我的表格中有一column包含文本(字符串)的column ,例如19.57.14,但也只有1911

我想将文本分为“ 1”前的所有2列 和1,所有文字都在“。”之后。

对于没有的条目 在字符串中,表的第二列必须有00 以及之后的所有数据 必须为2个字符长(填充0)。

例如19.5必须给column1: 19 column2: 50 ; 11必须给column1:11 column2:00有人可以用正确的tsql代码帮助我吗?

请试试:

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;

您可以将此用作函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM