如何更换'&'字符串中最后一个逗号的字符?

时间:2016-11-28 10:15:29

标签: sql sql-server

中的输入字符串
Declare @ListOfContactType nvarchar(1000) 
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee'

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

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

5 个答案:

答案 0 :(得分:2)

解决方案:

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

反转字符串以获取索引,而不是在替换预期输出后再次反转。

答案 1 :(得分: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

答案 2 :(得分: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)-@LastOccuredAt))

答案 3 :(得分:0)

您必须在字符串中找到逗号的最后一次出现。由于T-SQL不提供向后搜索的方法,因此从一开始就反转字符串并进行搜索。

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

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

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

应该给出你想要的结果。

答案 4 :(得分:0)

简单而直接的查询:

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

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