2011-01-21 42 views

Trả lời

2

Không có hỗ trợ tích hợp cho các cụm từ thông dụng trong DB2 9.7.

Cách duy nhất là sử dụng UDF hoặc hàm bảng như được mô tả trong bài viết 'OMG Ponies' được thêm vào trong nhận xét.

@ dan1111: Tôi không đánh giá cao bài đăng của mình đang được chỉnh sửa, đặc biệt nếu mọi người không thể đọc chính xác câu hỏi. OP yêu cầu Bất kỳ REGEXP-In- SQL hỗ trợ cho DB2 9.7

SQL không phải là XQuery !!!

Xin lỗi, đừng xóa nội dung câu trả lời đúng 100% của tôi. Bạn có thể thêm nhận xét hoặc viết câu trả lời của riêng bạn.

+2

Điều này không đúng. Biểu thức chính quy được hỗ trợ trong DB2 9.7 thông qua xQuery với hàm match: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.xml.doc/doc/xqrfnmat. html – AngocA

+0

Hiện không có xQuery: http://stackoverflow.com/a/38522897/1388357 –

+0

@TannerFaulkner đã đến lúc rồi. ;-) IBM luôn muộn với việc thêm rõ ràng. – tessus

6

Tôi là komikoni (Keisuke Konishi).

Tôi đã tạo hàm biểu thức chính quy (UDF) không tồn tại trong db2. UDF bằng cách sử dụng SQL/XML (Xquery). Bạn có thể dễ dàng cài đặt.

Danh sách biểu thức thông thường cung cấp UDF

  1. REG_MATCHES cung cấp trùng hợp ngẫu nhiên tồn tại (vô hướng)
  2. REG_REPLACE chuỗi thay thế (vô hướng)
  3. REG_COUNT số trận đấu lấy ra (Vô hướng)
  4. REG_POSITION trận đấu vị trí mua lại (vô hướng)
  5. REG_SUBSTR được một kết hợp chuỗi (Scalar)
  6. REG_SUBSTR_TABLE danh sách phù hợp với thông tin chuỗi (Bảng)
  7. REG_TOKENIZE_TABLE danh sách không phù hợp thông tin chuỗi (chia cho một chuỗi phân cách) (Bảng)
  8. REG_ALLTOKEN_TABLE danh sách thông tin chuỗi và phù hợp với chuỗi không phù hợp (Bảng)

kịch bản có thể được tải về từ đây. (Xin lỗi bằng tiếng Nhật)

https://www.ibm.com/developerworks/jp/data/library/db2/j_d-regularexpression/

(tiếng Anh: Machine translation Script: cuối cùng của một trang tiếng Nhật)

Tôi mong muốn được phản hồi và bình luận của bạn.

6

Câu trả lời thực sự là DB2 không hỗ trợ cụm từ thông dụng kể từ khi PureXML được thêm (v9.7 được bao gồm) qua xQuery với hàm trùng khớp.

Ví dụ:

db2 "with val as (
select t.text 
from texts t 
where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0 
) 
select * from val" 

Để biết thêm thông tin:

5

Đó hoạt động tốt trừ DB2 z/OS - trong v10 DB2 z/OS, bạn phải sử dụng PASSING như sau

with val as (
    select t.text 
    from texts t 
    where xmlcast(xmlquery('fn:matches($v,"^[A-Za-z 0-9]*$")' 
        PASSING t.text as "v") as integer) = 0 
    ) 
    select * from val 
4

Bắt đầu với DB2 11.1 có hỗ trợ regex tích hợp sẵn. Một trong các chức năng mới là REGEXP_SUBSTR và có một số chức năng khác.

SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
    FROM sysibm.sysdummy1 
+0

REGEXP_SUBSTR (ít nhất) hoạt động V7R1 trở đi – ATorras

+0

Chắc chắn. Cảm ơn bạn đã chỉ ra điều này. – xenoid

Các vấn đề liên quan