Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server 2012:giải nén nhóm Regex

Giả sử dữ liệu thực tế không phức tạp hơn các ví dụ đã nêu, điều này sẽ hoạt động mà không cần dùng đến RegEx:

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 '\';

Đầu ra:

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

Tái bút:
Nếu bạn thực sự muốn sử dụng Biểu thức chính quy, chúng chỉ có thể được thực hiện thông qua SQLCLR. Bạn có thể viết thư của riêng mình hoặc tải xuống các thư viện được thực hiện trước. Tôi đã viết một thư viện như vậy, SQL # , có phiên bản Miễn phí bao gồm các chức năng của RegEx. Nhưng chúng chỉ nên được sử dụng nếu không tìm thấy giải pháp T-SQL, điều này cho đến nay không phải là trường hợp ở đây.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chức năng tùy chỉnh với ràng buộc kiểm tra SQL Server 2008

  2. Quy trình kiểm tra đơn vị SQL được lưu trữ

  3. Làm thế nào để bạn đặt lại mật khẩu SA?

  4. Làm thế nào để tìm phụ thuộc khóa ngoại trong SQL Server?

  5. Thủ tục mong đợi tham số không được cung cấp