如何从其他列中选择字符串和Concatenate

时间:2015-07-08 10:15:03

标签: sql sql-server

我有这样的数据

declare @t table (Id int,val varchar(200),ad varchar(100))

insert into @t (Id,val,ad)values (1,'D:\Documents\FranchiseeUpload\Caste\CGC011400000192\01~HYD TO BBS 11 Jun.pdf','01~HYD TO BBS 11 Jul.pdf'),
(1,'D:\Documents\FranchiseeUpload\Caste\CGC011400000193\01~CNM_Anx3.pdf 01~CNM_Anx3.pdf','01~HYD TO BBS 11 Jul.pdf')

select * from @t

我只想挑选最后一个'\',并从他们需要添加来自另一列的数据

输出:

Id  val ad

    1   D:\Documents\FranchiseeUpload\Caste\CGC011400000192\01~HYD TO BBS 11 Jul.pdf    01~HYD TO BBS 11 Jul.pdf
    1   D:\Documents\FranchiseeUpload\Caste\CGC011400000193\01~HYD TO BBS 11 Jul.pdf    01~HYD TO BBS 11 Jul.pdf

4 个答案:

答案 0 :(得分:1)

使用LEFT()CHARINDEX()LEN()REVERSE()函数尝试此操作:

SELECT id, 
       LEFT(val, LEN(val) -CHARINDEX('\',REVERSE(val), 0) + 1) + ad As Val, 
       ad
FROM @t

答案 1 :(得分:1)

试试这个。在最后'/'之后找到字符,并将其替换为ad列。

SELECT id , 
Replace(val, 
        REVERSE(SUBSTRING(REVERSE(val),0,CHARINDEX('\',REVERSE(val)))), 
       ad) AS val, 
Ad 
from @t

答案 2 :(得分:1)

你也可以试试这个:

SELECT
    id,
    STUFF(val, LEN(Val) - CHARINDEX('\', REVERSE(val)) + 2, LEN(Val), '') + ad,
    ad
FROM
    @t

答案 3 :(得分:0)

CHARINDEX可以搜索字符串,但只能从头开始。因此,如果您首先反转字符串,则类似于从最后搜索。

然后你只需取出字符串中最左边的部分,然后连接你的另一个字段。

SELECT
    id,
    CONCAT(
        LEFT(val, LEN(val) - CHARINDEX('\', REVERSE(val))),
        '\',
        ad
    ),
    ad
FROM
    @t

请注意,如果您的第一个字段中没有\,那么只需将\附加到其末尾,然后在此之后添加ad字段。< / p>

相关问题