Câu hỏi này có câu trả lời cụ thể cho cơ sở dữ liệu.
Nếu sử dụng SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Bạn có thể thêm CASE
hoặc sử dụng NULLIF()
trong trường hợp không phải lúc nào cũng có dấu gạch ngang:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Hoặc:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Nếu sử dụng MySQL, chỉ cần thay đổi CHARINDEX()
thành LOCATE()
. Tôi tin rằng Oracle đó là INSTR()
và hai tham số đầu tiên được chuyển đổi, đầu tiên là chuỗi bạn đang tìm kiếm, sau đó là chuỗi bạn đang tìm kiếm.