4

これはかなり単純だと思います。クエリ結果の先頭の数字に接触する文字列値のみを返したいと思います。

例えば:

003 - Preliminary Examination Plan  
005 - Coordination  
1000a - Balance sheet
Advertising  
Amortization  
Partnerships

取得したい:

003 - Preliminary Examination Plan  
005 - Coordination  
1000a - Balance sheet

このコードの結果はゼロでした。先頭の数字に数字が含まれているかどうかを確認し、残りの文字列を返すにはどうすればよいですか?

select distinct AIssue
from SQLIssue
where regexp_like( AIssue, '^[[:digit:]]*$' )
order by AIssue
4

3 に答える 3

6

現在の正規表現では、文字列が完全に数字で構成されている必要があります。次のことを試してください。

where regexp_like( AIssue, '^[[:digit:]].*$' )

(追加されたドットに注意してください)。

詳しく説明すると、.任意の文字に一致し、*「前の用語を 0 回以上繰り返す」ことを意味します。

したがって、元の正規表現では「0 個以上の数字」と表現されますが、上記の正規表現では「数字の後に 0 個以上の任意の文字が続く」と表現されます。

編集: 上記の正規表現の短いバージョンは、コメントで @mellamokb によって提案されています。

where regexp_like( AIssue, '^[[:digit:]]' )
于 2012-05-24T15:45:48.367 に答える
1

SQL Server を使用している場合は、これを試してください。

select distinct Issue
 from SQLIssue
 where AIssue LIKE '[0-9]%'
 order by AIssue

のドキュメントを参照してください。LIKE

于 2012-05-24T15:45:46.867 に答える
1

別の解決策ですが、正規表現を使用しないもの:

select distinct Issue
from SQLIssue
where substr(AIssue, 1, 1) between '0' and '9'
order by AIssue 
于 2012-05-24T15:55:29.433 に答える