2012-04-19 84 views
2

我有一种情况,我需要从sql表格行中提取信息。 一个典型的字符串的样子,SQL逻辑提取信息

RMR*AZ*10001312**119.76 

其中RMR是确定该行的关键。我需要提取第二个和第三个*之间的信息,即10001312和第四个之后,即119.76

这些信息将填充在表中。

我怎么能做到这一点?

+3

**什么**数据库系统,以及哪个版本? ** SQL **只是结构化查询语言(Structured Query Language) - 许多数据库系统使用的语言 - SQL是** NOT **数据库产品......类似这样的东西通常是供应商特定的 - 所以我们真的需要知道什么你正在使用的数据库系统.... – 2012-04-19 20:48:00

+2

你不应该将所有的信息存储在单独的列而不是一个长字符串吗? – 2012-04-19 20:49:35

+0

Microsoft T-SQL – OBL 2012-04-19 20:51:32

回答

1

在SQL Server中完成的一个示例,它可能对您有所帮助。

declare @myString varchar(50) 
set @myString = 'sadfa*lkj*234r2*' 

declare @startPosition int 
declare @endPosition int 

--First * location 
select @startPosition = Charindex('*', @myString, 0) 

--Second * location 
select @endPosition = Charindex('*', @myString, @startPosition+1) 
select @endPosition 

select substring(@myString, 
    @startPosition +1 , 
    @endPosition - @startPosition -1) 
1

鉴于没有内建的SQL函数(我知道)解析一个字符串,我想建议使用用户定义的函数。然后你可以将你的字符串拆分为*,并获得你关心的索引。

线程here有一些广泛的讨论和许多这样的功能的例子。