2013-04-16 36 views
5

Tôi cố gắng để chọn tất cả các hàng từ một bảng nơi cột chứa một phần tử từ một danh sách: Something nhưMySQL: Chọn hàng nơi cột chứa phần tử từ danh sách

Select * from `table` where `column` (contains anything from {£,$,%,^,&,...,/}) 

này về cơ bản là một kiểm tra ký tự không hợp.

Có ai giúp được không?

Cảm ơn

Trả lời

9

Đối với MySQL bạn có thể sử dụng REGEXP hoặc RLIKE để kiểm tra cột cụ thể cho phù hợp với mô hình. Trong trường hợp của bạn ví dụ sau đây có thể làm việc:

SELECT * FROM `table` WHERE `column` REGEXP '[\£\$\%\^\&]'; 
+0

Cảm ơn điều này, bạn có biết một chuỗi thoát cho *? Tôi muốn điều này như là một nhân vật bất hợp pháp quá, đấu tranh để tìm thấy bất cứ điều gì trên nó –

+1

Thoát tất cả mọi thứ với dấu gạch chéo ngược. Kết quả: '[\ £ \ $ \% \^\ & \ * \?]'. – BlitZ

+0

@CORRUPT +1 để có câu trả lời dễ dàng, đơn giản và tốt. –

0

Bạn có thể sử dụng LIKE cho phù hợp với mô hình,

SELECT * 
FROM `table` 
WHERE `column` LIKE '%£%' OR 
     `column` LIKE '%$%' OR 
     `column` LIKE '%\%%' OR 
     `column` LIKE '%&%' 
0

Nếu tôi hiểu điều này một cách chính xác mà bạn muốn tất cả các hàng có ký tự không phải chữ nghĩa khác hơn chữ số và chữ cái

SELECT * FROM `table` WHERE `column` REGEXP '^[^a-zA-Z0-9]+$' 

Các ^ bên [ ] charcter lớp ngụ ý phủ định trong khi bên ngoài ở đầu biểu thức chính quy chỉ định bắt đầu giá trị cột. $ phần cuối của chuỗi giá trị

0
SELECT * FROM table WHERE column LIKE '%\%%' OR column LIKE '%$%' OR column LIKE '%&%'; 

... v.v ... '% char%' có nghĩa là có char ở đâu đó, '% char' có nghĩa là char ở cuối chuỗi, 'char%' có nghĩa là nó ở đầu. '% \ %%' có nghĩa là tìm kiếm char (%) là một char đặc biệt được sử dụng bởi mysql và '\' là cần thiết.

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