2012-02-15 52 views
8

Chúng tôi có thể sử dụng "NOT LIKE '%abc%'" ngay đối diện với LIKE '%abc%' không? tôi đã thử và có một số kết quả nhưng không giống như chính xác !!Chúng tôi có thể sử dụng "KHÔNG THÍCH" trong sql

Có điều gì tương tự với regex in SQL không.

Ví dụ:

i hae một bảng có 3 trường.

id name address 
1 xyz 1234 abcd 
2 abc nomans land 
3 omg #123 new-york 
3 nom $123 &7up 

tôi có thể lấy địa chỉ ** với ký tự đặc biệt với ra kiểm tra từng ký tự đặc biệt từng cái một. Cách

+1

Sự tồn tại của thẻ Db2 có nghĩa là ** Có regex trong DB2 ** không? – Oybek

+0

:-) đang sử dụng db2 .. nhưng câu hỏi là về sql chung! – zod

+0

Bởi googling tôi phát hiện ra rằng ngay cả máy chủ sql không có một số hỗ trợ của nó. Nhưng nó không được sử dụng rộng rãi. Tra cứu hàng Regex rất tốn kém. – Oybek

Trả lời

5

Chắc chắn, hãy xem here. Cũng KHÔNG THÍCH được hỗ trợ.

+1

Chỉ để hoàn thành câu trả lời, [Câu hỏi liên quan] (http://stackoverflow.com/questions/4763757/regular-expressions-in-db2-sql); – Oybek

+0

@Oybek -Thanks. –

+0

Bạn hoan nghênh =)) – Oybek

4

Trong SQL Server. nếu bạn muốn địa chỉ có chứa ký tự không phải là chữ cái và số và không gian:

address LIKE '%[^0-9a-zA-Z ]%'; 

lưu ý nhân vật ^ có nghĩa là "bất cứ ký tự đơn không nằm trong phạm vi chỉ định". Bạn không chắc liệu điều gì đó rất giống nhau có thể có trong DB2 hay không.

1

Trong DB2 (phiên bản 9.7.900.250), tôi đã chỉ định thành công "không thích" theo cách này:

select * from orders 
where not(orders.order_number like 'S%') 

Điều này cho thấy tất cả các đơn đặt hàng mà thứ tự # KHÔNG bắt đầu với số vốn "S".

1

Không có mô tả nào được đưa ra cho những gì đã được "thử và nhận được kết quả nhưng không giống như chính xác !!" liên quan đến truy vấn Chủ đề, nhưng khi xem xét dữ liệu đã cho và hai biến vị ngữ từ OP, hãy xem xét những điều sau; Cần lưu ý, những thứ regex điều tra được rõ ràng đã trả lời và chấp nhận, vì vậy bị bỏ qua trong phản ứng này:

with 
    xmp (id, name, address) as 
(values (1 , 'xyz' , '1234 abcd ' ) 
     , (2 , 'abc' , 'nomans land' ) 
     , (3 , 'omg' , '#123 new-york') 
     , (3 , 'nom' , '$123 &7up' ) 
) 
select id 
from xmp 
where address NOT LIKE '%abc%' 

Truy vấn DB2 trên nên mang tập {(2), (3), (3)} ; tức là bao gồm tất cả trừ hàng đầu tiên. Thay đổi biến vị ngữ từ address NOT LIKE '%abc%' thành address LIKE '%abc%' sẽ tạo tập hợp {(1)}; tức là chỉ bao gồm hàng đầu tiên. Đặc tả của vị từ ở dạng address NOT LIKE '%abc%' hoặc NOT (address LIKE '%abc%') sẽ mang lại kết quả tương tự; chúng là những yêu cầu giống hệt nhau về mặt logic.

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