qa-raj-ra
我想从上面的字符串中获取raj
。
连字符之间的字符长度可能会有所不同。
答案 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]