Bạn có thể sử dụng SUBSTRING_INDEX hai lần, lần thứ hai với -1 tham số:
SELECT
'aaaaa, bbbbb, ccccc',
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 1) AS column_one,
SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2), ',', -1) AS column_two,
SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 3), ',', -1) AS column_three
Nếu tham số là âm, mọi thứ ở bên phải của dấu phân cách cuối cùng (đếm từ bên phải) sẽ được trả về. Ví dụ:
-
SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2)
sẽ trả vềaaaaa, bbbbb
-
SUBSTRING_INDEX(
aaaaa, bbbbb, ',', -1)
sau đó sẽ trả vềbbbbb
Bạn cũng có thể muốn sử dụng ',' làm dấu phân cách hoặc TRIM kết quả.
Vui lòng xem fiddle tại đây .
Chỉnh sửa
Nếu bạn muốn xem xét các chuỗi có thể có ít hơn ba giá trị, bạn có thể sử dụng một cái gì đó như sau:
SELECT
s,
SUBSTRING_INDEX(s, ',', 1) AS column_one,
CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>0
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)
ELSE NULL END AS column_two,
CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>1
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 3), ',', -1)
ELSE NULL END AS column_three
FROM
strings
Vui lòng xem fiddle tại đây .