SQL Logic提取信息

时间:2012-04-19 20:39:16

标签: sql sql-server tsql

我遇到需要从sql表行中提取信息的情况。 典型的字符串看起来像

RMR*AZ*10001312**119.76

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

此信息将填入表格中。

我怎么能实现这个目标?

4 个答案:

答案 0 :(得分:1)

鉴于没有内置的SQL函数(我知道)来解析你想要的字符串,我建议使用用户定义的函数。然后,您可以在*上拆分字符串,并获取您关心的索引。

线程here有一些广泛的讨论和许多这类函数的例子。

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

答案 2 :(得分:0)

取决于您的数据库引擎。对于DB2,我实现了这个: https://stackoverflow.com/a/10175295/1336443

答案 3 :(得分:0)

好吧,你还没有说过你需要哪种SQL方言,所以只是一个通用的答案:使用SQL的字符串操作,例如在这里查看:http://www.1keydata.com/sql/sql-substring.html