我有這樣分割字符串和存儲
message_type=something, Hours=0, SQM=0, user_name=xxxxx, Boards=0, Charge=0, Proofs=0
一個字符串,我需要後,等於讓所有的值(=)(的東西,爲XXXXX,0,0,0,0),我們有使用SQL將它們存儲在變量中
我有這樣分割字符串和存儲
message_type=something, Hours=0, SQM=0, user_name=xxxxx, Boards=0, Charge=0, Proofs=0
一個字符串,我需要後,等於讓所有的值(=)(的東西,爲XXXXX,0,0,0,0),我們有使用SQL將它們存儲在變量中
如果我理解正確,您需要這樣的東西?
SELECT
RIGHT('message_type=something', (CHARINDEX('=', REVERSE('message_type=something'), 0)) - 1)
RIGHT,CHARINDEX和REVERSE都是特定於產品的函數,用於解答沒有指定dbms的問題。至少告訴OP你的答案是哪個dbms! – jarlh
這是爲什麼我說「如果我理解正確」 –
請嘗試下面的代碼。它在SQL Server 2012中工作正常:
BEGIN
DECLARE @str VARCHAR(2000)
DECLARE @input VARCHAR(4000)
DECLARE @ind Int
DECLARE @Count int
DECLARE @max int
SET @max =0
DECLARE @Result TABLE (ID int identity(1,1),value varchar(1000))
SET @input ='message_type=something, Hours=0, SQM=0, user_name=xxxxx, Boards=0, Charge=0, Proofs=0'
IF(@input is not null)
BEGIN
SET @ind = CharIndex(',',@input)
WHILE @ind > 0
BEGIN
SET @str = SUBSTRING(@input,1,@ind-1)
SET @input = SUBSTRING(@input,@ind+1,LEN(@input)[email protected])
INSERT INTO @Result values (@str)
SET @ind = CharIndex(',',@input)
END
SET @str = @input
INSERT INTO @Result values (@str)
END
SET @Count = (SELECT Max(ID) from @Result)
WHILE @Count > @max
BEGIN
SET @max = @max +1
DECLARE @Value varchar(1000)
SET @Value = (SELECT SUBSTRING(value, CHARINDEX('=', value) + 1, LEN(value)) from @Result WHERE ID [email protected])
SELECT @value
END
END
在最後while循環中,您可以根據需要指定相應的變量。
dbms是sybase,當我試着代碼我得到了這樣的錯誤函數-CHARINDEX調用錯誤的數量或類型的參數(S) 。 – Akhila
嘗試此查詢:
`select wm_concat(substr(val,instr(val,'=')+1)) from (select regexp_substr ('message_type=something,
Hours=0, SQM=0, user_name=xxxxx, Boards=0, Charge=0, Proofs=0', '[^,]+', 1, rn) as val
from dual
cross
join (select rownum as rn
from dual
connect by level <= 7));`
您正在使用什麼數據庫管理系統? –
「使用SQL將它們存儲在變量中」?現在的字符串在哪裏?你想存儲在哪裏?爲什麼你認爲你需要SQL? –
該字符串是在dbms中的列,我必須得到它並拆分該字符串並存儲值變量。我正在寫一個存儲過程,所以我需要SQL。 – Akhila