我有这样分割字符串和存储
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