2012-07-12 15 views
0

任何人都可以幫助我,因爲我需要提取數字後"Reference=" in the enclosed?不可能知道數字前後的字符數以及數字的長度(也可能是字母和數字),但它永遠是不知道位置或長度時使用SubString

After "Reference=" Before ",Description"

Object=CTSENORaanG,Reference=0000021357,Description=Test,Currency=EUR,Initial_Date=15Aug2011....

的字符串是從一個巨大的行量的表,我需要插入每一行的引用到另一個表

+2

這DBMS您正在使用和數量總是與'結尾,'? – 2012-07-12 07:14:32

回答

1

如果分隔符總是逗號,,那麼可以拆分字符串。然後,如果分隔的子字符串也與=一致,則可以進一步分割它。一旦你拿出Reference,你會得到它的等值。

/* your test string */ 
string s = "Object=CTSENORaanG,Reference=0000021357,Description=Test,Currency=EUR,Initial_Date=15Aug2011";  
string[] arr = s.Split(','); 

/* will contain the value you're looking for */  
string target = String.Empty; 

foreach (string item in arr) 
{ 
    string[] entry = item.Split('='); 
    if (entry.Length == 2 && entry[0] == "Reference") 
    { 
     target = entry[1]; 
     break; 
    } 
} 
+0

順便說一句這裏的語法是C#。由於您沒有指定您使用的是哪種語言,因此您應該明白。 – 2012-07-12 07:30:46

+0

對不起,它是sql服務器,我遇到了問題,因爲我需要「set @ str =(從MyTable中選擇列,其中列'%xx%''。」)。我可能沒有足夠好地描述 - 我需要的是分裂從一列的行的巨大量爲行的巨大量爲多列,例如 – user1519923 2012-07-12 13:07:25

+0

對象= CTSENORaanG,參考= 0000021357,描述=測試,外幣= EUR,Initial_Date = 15Aug2011 .... 參考說明貨幣等等 – user1519923 2012-07-12 13:08:20

0
use 
pos = explode(",",string); 
foreach(pos as po) 
{ 
    p = explode("=",po) 
    i=0; 
    foreach(p as a) 
    { 
     if(a[i]== Reference) 
     { 
      echo p[i+1]; 
      i++; 
     } 
    } 
} 
2

SQL服務器

declare @str varchar(1000) 
set @str='Object=CTSENORaanG,Reference=0000021357,Description=Test,Currency=EUR,Initial_Date=15Aug2011....'; 

select substring(col,1,charindex(',',col)-1) from 
(
select substring(@str,charindex('Reference=',@str)+10,100) as col 
) as t; 

MySQL的

set @str:='Object=CTSENORaanG,Reference=0000021357,Description=Test,Currency=EUR,Initial_Date=15Aug2011....'; 

select substring(col,1,locate(',',col)-1) from 
(
select substring(@str,locate('Reference=',@str)+10,100) as col 
) as t; 
相關問題