2016-11-28 94 views
0

我的输入字符串中如何替换字符串中最后一个逗号的'&'字符?

Declare @ListOfContactType nvarchar(1000) 
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee' 

请帮助我获得输出'Customer,Supplier,Financier & Employee'

注:字符串中@ListOfContactType可能会有所不同。

+0

您可以在下面接受任何一个答案。如果它对你有帮助。 – Buddi

回答

0
Declare @ListOfContactType nvarchar(1000) 
Declare @LastOccuredAt int 
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee' 
SET @LastOccuredAt=LEN(@ListOfContactType) - CHARINDEX(',',REVERSE(@ListOfContactType)) 
print substring(@ListOfContactType,1,@LastOccuredAt) + ' & ' + substring(@ListOfContactType,@LastOccuredAt +2,(len(@ListOfContactType)[email protected])) 
1

找到的最后一个实例,与CHARINDEX的帮助和替换与&使用stuff功能。

DECLARE @LISTOFCONTACTTYPE NVARCHAR(1000) 

SET @LISTOFCONTACTTYPE = 'CUSTOMER,SUPPLIER,FINANCIER,EMPLOYEE' 

SELECT STUFF(@LISTOFCONTACTTYPE, 
      LEN(@LISTOFCONTACTTYPE) - CHARINDEX(',', REVERSE(@LISTOFCONTACTTYPE))+1, 1, ' & ') AS OUT_PUT 
+0

,用逗号给出以下结果。客户,供应商,Financie&,员工 – Mansoor

+0

@Mansoor更新后。 – Buddi

0

你必须在字符串中找到最后一个逗号。由于T-SQL没有提供向后搜索的方法,因此技巧是从一开始就颠倒字符串和搜索。

LEN(@ListOfContactType) - CHARINDEX(',', REVERSE(@ListOfContactType)) 

会给你这个位置。然后,您可以用逗号STUFF替换逗号,但请记住,您必须纠正一个字符的位置。所以

STUFF(@ListOfContactType, 1 + LEN(@ListOfContactType) - CHARINDEX(',', REVERSE(@ListOfContactType)), 1, ' & ') 

应该给你想要的结果。

1

解决方案:

Declare @ListOfContactType nvarchar(1000); 
Declare @Position int; 

Set @ListOfContactType = 'Customer,Supplier,Financier,Employee'; 
Set @Position = CHARINDEX(',', REVERSE(@ListOfContactType)); 

select REVERSE(STUFF(REVERSE(@ListOfContactType), @position, 1, '&')) 

预期输出:

Customer,Supplier,Financier&Employee 

反转字符串的景气指数,不是更换为预期产出后再次反转。

0

简单,非常简单的查询:

Declare @ListOfContactType nvarchar(1000) 
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee' 

select reverse(stuff(reverse(@ListOfContactType),charindex(',',reverse(@ListOfContactType)),1,' & '))