2013-10-21 22 views
20

Tôi cần trích xuất mọi thứ sau '=' (http://www.domain.com?query=blablabla -> blablabla) cuối cùng nhưng truy vấn này trả về toàn bộ chuỗi. Tôi đã đi đâu sai ở đây:SQL SELECT mọi thứ sau một ký tự nhất định

SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference)) 
FROM ps_product 
+2

Bạn đang sử dụng công cụ cơ sở dữ liệu nào? Nó không phải là SQL Server, phải không? – acfrancis

Trả lời

35
select SUBSTRING_INDEX(supplier_reference,'=',-1) from ps_product; 

Vui lòng sử dụng http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php để tham khảo thêm.

+2

Điều đó có thể gây ra một số vấn đề, không có '=' trong cột, trong trường hợp đó bạn có thể sử dụng: 'SELECT IF (LOCATE ('=', provider_reference), SUBSTRING_INDEX (supplier_reference, '=', - 1), default_value) FROM ps_product; 'và bạn có thể đặt giá trị mặc định thay vì trả lại cột đầy đủ ban đầu. – golddragon007

+0

Nếu chuỗi chứa nhiều '=' và tôi muốn mọi thứ sau '=' đầu tiên thì sao? –

7

Hãy thử điều này (nó nên làm việc nếu có nhiều '=' ký tự trong chuỗi):

SELECT RIGHT(supplier_reference, (CHARINDEX('=',REVERSE(supplier_reference),0))-1) FROM ps_product 
3

Hãy thử điều này trong MySQL.

right(field,((CHAR_LENGTH(field))-(InStr(field,',')))) 
+1

Cảm ơn sự đóng góp của bạn. Sẽ hữu ích hơn nếu thêm một số giải thích về cách giải quyết vấn đề này. –

0

Đối với SQL Management studio Tôi đã sử dụng biến thể của câu trả lời của BWS. Điều này được các dữ liệu bên phải '=', hoặc NULL nếu biểu tượng không tồn tại:

CASE WHEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN 
    0 ELSE CHARINDEX('=', supplier_reference) -1 END)) <> '' THEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN 
    0 ELSE CHARINDEX('=', supplier_reference) -1 END)) ELSE NULL END 
1

Trong MySQL, công trình này nếu có nhiều '=' ký tự trong chuỗi

SUBSTRING(supplier_reference FROM (LOCATE('=',supplier_reference)+1)) 

Trả về chuỗi con sau (+1) khi tìm thấy đầu tiên =

+0

Điều này hữu ích khi có nhiều '=' và chúng tôi muốn chuỗi sau lần xuất hiện đầu tiên của '=' –

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