如何在连字符之间获取字符

时间:2014-11-04 11:50:38

标签: sql

qa-raj-ra

我想从上面的字符串中获取raj

连字符之间的字符长度可能会有所不同。

3 个答案:

答案 0 :(得分: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 :(得分: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

您可以将硬编码的字符串替换为您想要的任何内容,它将在两个连字符之间返回文本。

答案 2 :(得分:0)

在Postgres中,您可以使用string_to_array()

select (string_to_array('qa-raj-ra', '-'))[2]