1

次の方法でセットアップされたデータベース (変更が許可されていない) にテーブルがあります。

ID  Value                                                                 Column x...
0   Apple: GDGolden Delicious, Date Picked: 5/5/2012, Color: Yellow
1   Apple: GSGranny Smith, Date Picked: 3/24/2010, Color: Green
2   Apple: RDRed Delicious, Date Picked: 1/15/2012, Color: Red
3   Random Data, Apple: BRBrayburn, Date Picked: 2/15/2012, Color: Mixed

IDINTおよびValueでありVarChar、データ間はコンマで区切られます。

テーブルのすべての行について、リストされているものの部分文字列 (この場合は、各果物の品種 (つまり、GD、GS、RD、BR) の略語) を取り出して、すべてを含む一時テーブルに配置する必要があります。そのテーブルの他の列と部分文字列が含まれていますが、列の他のデータはありませんValue。表内の各部分文字列の省略形は正確に 2 文字ですが、最後の行でわかるように、常に列の先頭に表示されるとは限りません。

私の読書では、これを行うにはカーソルを使用する必要があるように思えますが、可能であればそれを避けたいと思っています。おそらくケースステートメントまたはサブクエリを介して、カーソルを使用せずにこれを達成する方法はありますか?

最終結果は次のようになります。

ID  Value  Column x  Column y...
0   GD     
1   GS     
2   RD     
3   BR     

前もって感謝します。

4

2 に答える 2

4

イベントでは、記録に が記載されていないApple:場合、最初の を探すことができます:

select id, 
  substring(value, charindex(':', value, 1) + 2, 2) value
from yourtable

デモで SQL Fiddle を参照してください

于 2012-10-24T22:00:24.700 に答える
2
SELECT ID, SUBSTRING(value, CHARINDEX('Apple: ',value)+7, 2)
    FROM YourTable
于 2012-10-24T21:50:45.383 に答える