SQLテーブルの行から情報を抽出する必要がある状況があります。典型的な文字列は次のようになります。
RMR*AZ*10001312**119.76
RMR
行を識別するためのキーはどこにありますか。*
2番目と3番目の間、つまり10001312
4番目以降の情報を抽出する必要があります。119.76
この情報はテーブルに入力されます。
どうすればこれを達成できますか?
SQLテーブルの行から情報を抽出する必要がある状況があります。典型的な文字列は次のようになります。
RMR*AZ*10001312**119.76
RMR
行を識別するためのキーはどこにありますか。*
2番目と3番目の間、つまり10001312
4番目以降の情報を抽出する必要があります。119.76
この情報はテーブルに入力されます。
どうすればこれを達成できますか?
必要な文字列を解析するための組み込みのSQL関数(私が知っている)がないことを考えると、ユーザー定義関数を使用することをお勧めします。次に、文字列を分割*
して、気になるインデックスを取得できます。
ここのスレッドには、いくつかの広範な議論とそのような関数の多くの例があります。
あなたを助けるかもしれない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)
データベース エンジンによって異なります。DB2 の場合、これを実装しました: https://stackoverflow.com/a/10175295/1336443
さて、あなたは必要な SQL ダイアレクトの 1 つを言っていないので、一般的な答えです: SQL の文字列操作を使用してください。たとえば、ここを見てください: http://www.1keydata.com/sql/sql-substring.html