2016-11-09 3 views
2

私はシンプルなSQLクエリを持っています。例えば、string sql="select 'a1,a2' f1, 2 f2;"です。データベースなしでstringからobject[](sql-syntaxルールを使用)を解析する方法は?正規表現変換を使用することができます。SQLをデータテーブルまたは配列に解析する方法はC#でですか?

+0

@flipchartは、受信SQLサーバのない単純な解析できません( '').SplitようC#内の文字列のSplit方法を使用することができます。 –

+0

'a1、a2'は1つの列の値ですか? –

+0

@Farid Imranovはい、私は* split( "、")*使用することができますが、分割すると間違った結果が得られます。 –

答えて

0

あなたが

+0

あなたのアイデアは良いですが、スプリットは[a1 '] [a2'] [2]を受け取り、[a1、a2] [2]を受け取る必要があります –

+0

どのデータベースを使用していますか? –

+0

データベースが使用されていません。私はテーブルに配列なしでSQLクエリを変換します。 –

1
var str = "select 'a1,a2' f1, 2 f2;"; 
Regex.Matches(str, "(^|[\\s,\\,]){1}(\\'.*\\'\\s*\\w+|[^\\,^']*)[\\,,$,;]") 
     .Cast<Match>() 
     .Select(m => m.Value.Split(new[] { ' '}, StringSplitOptions.RemoveEmptyEntries) 
          .First().Replace("\'","")) 
     .ToArray(); 
+0

ありがとう、私は 'select '1、a2' f1,2 a、 '123' a、4,1 '、または' select 1 a、2b、3 c 'と表示されます。私はregex '" \\、(( '' [^ '] * [^、] *')| [^、] *) "'を使用し、* select *を '、'に置き換えます。 More: 'string str =" select '1、a2' f1,2 a、 '123' a、4、a "; foreach(Regex.Matches内の一致m(str.Replace( "select"、 "、") "\\、(( '' [^ '] * [^、] *')| [^、] *)") )Console.WriteLine(m.Value.Substring(1)); 'ありがとう。 –

関連する問題