0

「ルート」テーブルに「AppendedData」列があります。この形式でデータを保存します

-------------
ID |  AppendedData
1  |  abc : xyz
2  |  123a : gvk
--------------

私が欲しいのは、この「AppendedData」のwhere句を2つの部分に分割/サブストリングすることにより、検索クエリを作成することです。「:」の前の部分は、値の照合に使用されます。

私が作業している現在のアプリケーションは古いものなので、ストアドプロシージャを作成することはできません。だから私が残しているのは、c#でクエリを記述し、それを実行してデータブルを返すことです。では、C#でこれを行うにはどうすればよいですか?

私はこれまでSQLサーバーでこれを試していましたが、2番目の部分、つまり「:」の後を返しています。

私の質問:

select SUBSTRING(AppendedData,CHARINDEX(':',AppendedData)+1, 100) from  route
4

2 に答える 2

1

これを試して、

SQL

declare @route  TABLE
(  
    [ID] [int] NOT NULL,  
    [AppendedData] varchar (50) NOT NULL  
)   

insert into @route values (1, 'abc : xyz') 
insert into @route values (2, '123a : gvk') 

select SUBSTRING(AppendedData,CHARINDEX(':',AppendedData)+1, 100) from @route where             SUBSTRING(AppendedData,1, CHARINDEX(':', AppendedData)-1) = '123a'  

C#

var lstRoutes = new List<Route>
{
    new Route {ID = 1, AppendedData = "abc : xyz"},
    new Route {ID = 2, AppendedData = "123a : gvk"},
                                   };
var result = lstRoutes.Where(r1 => r1.AppendedData.Split(':')[0].Trim() == "abc")
            .Select(r => new { r.ID, right = r.AppendedData.Split(':')[1] });
于 2012-10-24T09:53:24.967 に答える
0

値の最初の部分を一致させたい場合は、次のように試すことができます

SELECT * FROM Route WHERE AppendData LIKE '123a :%'

そしてそれはあなたの行をID2と一致させます。

于 2012-10-24T09:43:52.787 に答える