中的输入字符串
Declare @ListOfContactType nvarchar(1000)
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee'
请帮助我输出'Customer,Supplier,Financier & Employee'
注意:@ListOfContactType中的字符串可能会有所不同。
答案 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,' & '))