sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2012:正規表現グループを抽出します

    実際のデータが前述の例よりも複雑ではないと仮定すると、これは正規表現に頼ることなく機能するはずです:

    DECLARE @posts TABLE
    (
       post_id INT NOT NULL IDENTITY(1, 1),
       post_text NVARCHAR(4000) NOT NULL,
       body NVARCHAR(2048) NULL
    );
    INSERT INTO @posts (post_text, body) VALUES (N'first',
                                               N'Visit [Google](http://google.com)');
    INSERT INTO @posts (post_text, body) VALUES (N'second',
                                               N'Get an [iPhone](http://www.apple.com)');
    INSERT INTO @posts (post_text, body) VALUES (N'third',
                                               N'[Example](http://example.com)');
    INSERT INTO @posts (post_text, body) VALUES (N'fourth',
                                               N'This is a message');
    INSERT INTO @posts (post_text, body) VALUES (N'fifth',
                                               N'I like cookies (chocolate chip)');
    INSERT INTO @posts (post_text, body) VALUES (N'sixth',
                                               N'[Frankie] says ''Relax''');
    INSERT INTO @posts (post_text, body) VALUES (N'seventh',
                                               NULL);
    
    
    SELECT p.post_text,
           SUBSTRING(
                      p.body,
                      CHARINDEX(N'](', p.body) + 2,
                      CHARINDEX(N')', p.body) - (CHARINDEX(N'](', p.body) + 2)
                    ) AS [URL]
    FROM   @posts p
    WHERE  p.body like '%\[%](http%)%' ESCAPE '\';
    

    出力:

    post_text  URL
    first      http://google.com
    second     http://www.apple.com
    third      http://example.com
    

    PS:
    あなたが本当になら 正規表現を使用したい場合は、SQLCLRを介してのみ実行できます。独自のライブラリを作成することも、事前に作成されたライブラリをダウンロードすることもできます。そのようなライブラリの1つ、 SQL# を作成しました。 、RegEx関数を含む無料バージョンがあります。ただし、これらはT-SQLソリューションが見つからない場合にのみ使用する必要があります。これまでのところ、ここではそうではありません。




    1. 11gのselectステートメントから新しく作成されたテーブルの列のデフォルト値を設定する方法

    2. エラーでコンパイルされたpersonsテーブルの挿入または削除時にログテーブルに行を挿入するトリガー

    3. SQLAlchemyの`create_engine`で`charset`と`encoding`を使用する方法(パンダデータフレームを作成するため)?

    4. MySQLまたはMariaDBデータベースに接続する方法