我的输入字符串中如何替换字符串中最后一个逗号的'&'字符?
Declare @ListOfContactType nvarchar(1000)
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee'
请帮助我获得输出'Customer,Supplier,Financier & Employee'
注:字符串中@ListOfContactType可能会有所不同。
我的输入字符串中如何替换字符串中最后一个逗号的'&'字符?
Declare @ListOfContactType nvarchar(1000)
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee'
请帮助我获得输出'Customer,Supplier,Financier & Employee'
注:字符串中@ListOfContactType可能会有所不同。
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]))
找到的最后一个实例,与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
你必须在字符串中找到最后一个逗号。由于T-SQL没有提供向后搜索的方法,因此技巧是从一开始就颠倒字符串和搜索。
LEN(@ListOfContactType) - CHARINDEX(',', REVERSE(@ListOfContactType))
会给你这个位置。然后,您可以用逗号STUFF
替换逗号,但请记住,您必须纠正一个字符的位置。所以
STUFF(@ListOfContactType, 1 + LEN(@ListOfContactType) - CHARINDEX(',', REVERSE(@ListOfContactType)), 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
反转字符串的景气指数,不是更换为预期产出后再次反转。
简单,非常简单的查询:
Declare @ListOfContactType nvarchar(1000)
SET @ListOfContactType = 'Customer,Supplier,Financier,Employee'
select reverse(stuff(reverse(@ListOfContactType),charindex(',',reverse(@ListOfContactType)),1,' & '))
您可以在下面接受任何一个答案。如果它对你有帮助。 – Buddi