2012-04-19 82 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有一些廣泛的討論和許多這樣的功能的例子。