2017-08-23 24 views
0

我有一個小字符串,我需要採取的具體部分的問題。從可能具有可變長度的最大字符串中剪切某個字符串。 (SQL SERVER)

我確切地知道它在哪裏開始,但它可能有不同的長度,所以我不能使用SUBSTRING,我有一個固定長度的字符,我可以使用。

例子:

EREF+322345 KARR CUSTOMER1 .... 

EREF+3211234 KARR CUSTROMER2.... 

我需要數+標誌,直到空間後半句KARR開始之前。 第一行是322345(6個字符),第二行是3211234這是7個字符,所以長度可以變化。

SUBSTRING不幫我在這種情況下,因爲我沒有固定數量的字符我想要切割的字符串。 有什麼建議嗎?

回答

0

這將工作:

declare @a varchar(255)='EREF+322345 KARR CUSTOMER1' 
select substring(@a,charindex('+',@a,1)+1,charindex(' ',@a,1)-charindex('+',@a,1)) 

------------------------------- 
declare @a varchar(255)='EREF+3211234 KARR CUSTROMER2.' 
select substring(@a,charindex('+',@a,1)+1,charindex(' ',@a,1)-charindex('+',@a,1)) 
+0

,你已經開了1有,krish - 這將在同樣數量的最後返回的空間。改變空間的其他東西,看看我的意思是'聲明@a varchar(255)='EREF + 3211234#KARR CUSTROMER2'。 select substring(@ a,charindex('+',@ a,1)+1,charindex('#',@ a,1)-charindex('+',@ a,1)' –

+0

也可能add一些關於它爲什麼起作用的解釋,因爲它就像「wham,這裏是一個代碼塊」 –

+0

它開始的地方(索引)總是知道的,並且在「EREF +」之後它是不知情的,它總是以「KARR」結尾。問題是我在字符串中有多個「+」(我沒有在我的例子中發佈整個字符串)。所以我改變它,以便我知道它從哪裏開始(Charindex 6)和雅作爲蔡斯賈德說這將需要一個字符比我需要哪個是空間或任何它是。 –

相關問題