我有一種情況,我需要從sql表格行中提取信息。 一個典型的字符串的樣子,SQL邏輯提取信息
RMR*AZ*10001312**119.76
其中RMR
是確定該行的關鍵。我需要提取第二個和第三個*
之間的信息,即10001312
和第四個之後,即119.76
這些信息將填充在表中。
我怎麼能做到這一點?
我有一種情況,我需要從sql表格行中提取信息。 一個典型的字符串的樣子,SQL邏輯提取信息
RMR*AZ*10001312**119.76
其中RMR
是確定該行的關鍵。我需要提取第二個和第三個*
之間的信息,即10001312
和第四個之後,即119.76
這些信息將填充在表中。
我怎麼能做到這一點?
在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)
取決於您的數據庫引擎。對於DB2我實現了這一點: https://stackoverflow.com/a/10175295/1336443
好了,你還沒說你需要SQL方言,所以只是一個通用的答案之一:使用SQL的字符串操作,例如看這裏:http://www.1keydata.com/sql/sql-substring.html
鑑於沒有內建的SQL函數(我知道)解析一個字符串,我想建議使用用戶定義的函數。然後你可以將你的字符串拆分爲*
,並獲得你關心的索引。
線程here有一些廣泛的討論和許多這樣的功能的例子。
**什麼**數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言(Structured Query Language) - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......類似這樣的東西通常是供應商特定的 - 所以我們真的需要知道什麼你正在使用的數據庫系統.... – 2012-04-19 20:48:00
你不應該將所有的信息存儲在單獨的列而不是一個長字符串嗎? – 2012-04-19 20:49:35
Microsoft T-SQL – OBL 2012-04-19 20:51:32