私はOracleとJDBCを使ってムービーのリストを持つデータベースを設定しています。ロードされるフィールドは、MovieId、MovieTitle、およびGenreです。 フォーマット例:Oracle SQLの正規表現とカラム分割
MovieId MovieTitle Genre
1 Toy Story (1997) Animated
今私は、「イヤー」と呼ばれる別の列に1997年のリストを表示するために私MovieTitleを分割する必要があります。私の映画のいくつかは、そのタイトルに括弧を持っているので、それは、何も良いですが
SELECT SUBSTR(Movies.MovieTitle, 1, INSTR(Movies.MovieTitle, '(')-1) AS MovieTitle,
SUBSTR(Movies.MovieTitle, INSTR(Movies.MovieTitle, ')')) AS Year
FROM MOVIES;
:私はそれがこれを使用して、以前の動作するようになりました。だから、私は正規表現を使用する必要があると思うが、私はそれを動作させることはできません。ここで私が周りを遊んでいるものは次のとおりです。
WITH TEST AS
(SELECT MovieTitle FROM Movies)
SELECT REGEXP_SUBSTR(Movies.MovieTitle, '^\(\d{4}\)$', 1, 1) MovieTitle,
REGEXP_SUBSTR(Movies.MovieTitle, '^\(\d{4}\)$', 1, 2) Year
FROM Movies;
すべての私に私のすべての映画の2つのnull列です。私は正しい道を歩いていますか?もう一つの懸念は、私がオリジナルのMoviesテーブルの更新であり、新しいクエリや独自のテーブルではないことです。ご意見ありがとうございます。
素晴らしい!これは間違いなく数字の抽出に役立ちますが、私のムービーテーブルにはどのように別の列がありますか? – Polyphase29
@ Polyphase29:それはすでに正規表現に関連していないものです。私はあなたがすでにその列を持っている必要があると思うと、抽出された値を挿入するだけです。 –
SQL Developerでデータベースを実行するとSQLが動作するようになりますが、Javaコードを使用して実行しようとしていて、Javaのエスケープシーケンスを実行したいと思って混乱させてしまいます。 。いくつかの検索を通じて私は正規表現を '\\\\((\ \\\ d {4})\\\\'に変更すると思っていましたが、そのたびにnullになります。私はそれを動作させるために更新することができます上の任意のアイデア? – Polyphase29