2014-11-04 26 views
-1
qa-raj-ra 

我想從上面的字符串獲取raj如何獲取連字符之間的字符

連字符之間的字符長度可能會有所不同。

+3

您正在使用什麼RDBMS? SQL Server,Oracle,MySQL等?在提問之前,我們還需要看看你的努力(你試過的問題)。 – 2014-11-04 11:51:54

+1

在網上搜索您的RDBMS的子字符串函數。 – SMA 2014-11-04 11:52:45

回答

1

如果您只需要部分字符串,則可以使用MS SQL Server中的內置SPLIT函數。 給定分隔符,它會爲你分割字符串。

下面的查詢可能有助於返回所需的結果;

DECLARE @string NVARCHAR(MAX), 
     @delimiter CHAR(1), 
     @start INT, 
     @end INT 

create TABLE #output (ID int IDENTITY(1,1) PRIMARY KEY, splitdata NVARCHAR(MAX)) 

SET @string = 'qa-raj-ra' 
SET @delimiter = '-' 

    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
     IF @end = 0 
      SET @end = LEN(@string) + 1 

     INSERT INTO #output (splitdata) 
     VALUES(SUBSTRING(@string, @start, @end - @start)) 
     SET @start = @end + 1 
     SET @end = CHARINDEX(@delimiter, @string, @start) 

     END 

SELECT splitdata FROM #output 
WHERE ID = 2 

爲了更好地使用,您可以將查詢放入存儲過程並使用@string作爲參數。

1

以下是通過查詢(在MySQL上)獲取結果的一種快速且令人討厭的方式。

SELECT LEFT(RIGHT('qa-raj-ra',LENGTH('qa-raj-ra')-INSTR('qa-raj-ra','-')), 
    INSTR(RIGHT('qa-raj-ra',LENGTH('qa-raj-ra')-INSTR('qa-raj-ra','-')),'-')-1); 

http://sqlfiddle.com/#!2/d41d8/48020

您可以替換任何你想要的硬編碼字符串,它會返回兩個連字符之間的文本。

0

在Postgres裏,你可以使用string_to_array()

select (string_to_array('qa-raj-ra', '-'))[2] 
相關問題