2016-11-28 92 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,' & ')) 
相關問題