2

SQLテーブルの行から情報を抽出する必要がある状況があります。典型的な文字列は次のようになります。

RMR*AZ*10001312**119.76

RMR行を識別するためのキーはどこにありますか。*2番目と3番目の間、つまり100013124番目以降の情報を抽出する必要があります。119.76

この情報はテーブルに入力されます。

どうすればこれを達成できますか?

4

4 に答える 4

1

必要な文字列を解析するための組み込みのSQL関数(私が知っている)がないことを考えると、ユーザー定義関数を使用することをお勧めします。次に、文字列を分割*して、気になるインデックスを取得できます。

ここのスレッドには、いくつかの広範な議論とそのような関数の多くの例があります。

于 2012-04-19T20:50:55.370 に答える
1

あなたを助けるかもしれないSQLサーバーで行われた例。

declare @myString varchar(50)
set @myString = 'sadfa*lkj*234r2*'

declare @startPosition int
declare @endPosition int

--First * location
select @startPosition = Charindex('*', @myString, 0)

--Second * location
select @endPosition = Charindex('*', @myString, @startPosition+1)
select @endPosition 

select substring(@myString, 
    @startPosition +1 ,
    @endPosition - @startPosition -1)
于 2012-04-19T20:54:09.303 に答える
0

データベース エンジンによって異なります。DB2 の場合、これを実装しました: https://stackoverflow.com/a/10175295/1336443

于 2012-04-19T20:48:47.533 に答える
0

さて、あなたは必要な SQL ダイアレクトの 1 つを言っていないので、一般的な答えです: SQL の文字列操作を使用してください。たとえば、ここを見てください: http://www.1keydata.com/sql/sql-substring.html

于 2012-04-19T20:49:04.860 に答える