我有这样的数据
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
答案 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>