MySQL SUBSTRING_INDEX() trả về chuỗi con từ chuỗi đã cho trước một số lần xuất hiện được chỉ định của dấu phân cách Show
Chuỗi con được trả về từ bên trái của dấu phân cách cuối cùng khi số được chỉ định là số dương và từ bên phải của dấu phân cách cuối cùng khi số được chỉ định là số âm Nếu số được chỉ định lớn hơn số lần xuất hiện của dấu phân cách, chuỗi con trả về sẽ là chuỗi tổng. Nếu số được chỉ định là 0, sẽ không có gì được tìm nạp từ chuỗi đã cho cú pháp SUBSTRING_INDEX(str, delim, count) Tranh luận NameDescriptionstrA chuỗi. delimMột dấu phân cách. countMột số nguyên cho biết số lần xuất hiện của delim Sơ đồ cú pháp Phiên bản MySQL. 5. 6 Trình chiếu video Trình duyệt của bạn không hỗ trợ video HTML5 Thí dụ. Hàm SUBSTRING_INDEX() của MySQL Câu lệnh MySQL sau đây trả về dạng chuỗi con bên trái của dấu phân cách cuối cùng i. e. dấu phân cách thứ 2 (. ) từ chuỗi đã cho 'www. mytestpage. thông tin'. Đếm bắt đầu từ bên trái của chuỗi Mã số
Đầu ra mẫu mysql> SELECT SUBSTRING_INDEX('www.mytestpage.info','.',2); +----------------------------------------------+ | SUBSTRING_INDEX('www.mytestpage.info','.',2) | +----------------------------------------------+ | www.mytestpage | +----------------------------------------------+ 1 row in set (0.02 sec) Trình bày bằng hình ảnh Ví dụ về hàm MySQL SUBSTRING_INDEX() sử dụng số âmCâu lệnh MySQL sau đây trả về chuỗi con từ bên phải của dấu phân cách cuối cùng i. e. dấu phân cách thứ 2 (. ) từ chuỗi đã cho 'www. mytestpage. thông tin'. Đếm bắt đầu từ bên phải của chuỗi Mã số
Đầu ra mẫu mysql> SELECT SUBSTRING_INDEX('www.mytestpage.info','.',-2); +-----------------------------------------------+ | SUBSTRING_INDEX('www.mytestpage.info','.',-2) | +-----------------------------------------------+ | mytestpage.info | +-----------------------------------------------+ 1 row in set (0.00 sec) Trình bày bằng hình ảnh Thí dụ. Tách một địa chỉ IP thành 4 octet tương ứng bằng cách sử dụng hàm MySQL SUBSTRING_INDEX()Lệnh MySQL sau đây chia địa chỉ IP thành 4 octet tương ứng (đơn vị thông tin kỹ thuật số). Giả sử các địa chỉ IP được lưu trữ trong một bảng mẫu có tên là 'log_file' Chúng tôi đã làm việc với rất nhiều khách hàng thường xuyên viết SQL. Và thỉnh thoảng họ đến gặp chúng tôi với câu hỏi SQL - mà chúng tôi nghĩ sẽ rất thú vị khi chia sẻ với những người khác Hôm nay, một trong những khách hàng của chúng tôi đã đến gặp chúng tôi với một câu hỏi - Họ gặp sự cố khi hủy lồng một chuỗi/mảng thành các hàng trong Amazon Redshift Câu hỏi - Tách chuỗi được phân cách bằng dấu phẩy thành các hàng trong RedshiftGiả sử chúng ta có một bảng
Và chúng tôi muốn tách/bỏ tổ hợp/nổ nó để nó trở thành như thế này
Trong Postgres, chúng ta có thể sử dụng ngay
Nhưng làm thế nào để chúng tôi làm điều này trong Amazon Redshift (không hỗ trợ unnest)? Chuỗi thành mảng trong Amazon RedshiftGiải pháp (hoặc cách giải quyết) đang cố chia chuỗi thành nhiều phần ________số 8_______Truy vấn trên sẽ cung cấp cho bạn kết quả chính xác khi sử dụng Ở đây, NS (dãy số) là một CTE trả về danh sách các số từ 1 đến N, ở đây chúng tôi phải đảm bảo rằng số tối đa của chúng tôi lớn hơn kích thước của các thẻ tối đa của chúng tôi, vì vậy bạn có thể thử thêm nhiều số hơn vào Vấn đề tương tự trong MySQLCách tiếp cận tương tự có thể được áp dụng nếu bạn đang sử dụng MySQL, mặc dù bạn phải thay đổi cú pháp/chức năng một chút
Một vài lưu ý
Nếu tôi có một mảng JSON của Redshift thì sao?Được rồi, nếu cột 4 của bạn thực sự là một chuỗi chứa chuỗi JSON thì sao?
Một cách tiếp cận là bạn chỉ có thể coi chúng là chuỗi và áp dụng cùng một string_split ở trên với một số thao tác làm sạch chuỗi (xóa dấu ngoặc kép, dấu ngoặc vuông). Hoặc bạn có thể sử dụng một số hàm mảng JSON
Phần kết luậnLàm việc với mảng trong Redshift và MySQL thường rất khó khăn, nhưng hầu hết các trường hợp luôn có cách giải quyết sáng tạo giúp bạn đạt được mục đích tương tự Tôi đã biên soạn danh sách các ví dụ với dữ liệu mẫu tại đây để bạn tham khảo (bạn có thể sao chép và dán trực tiếp vào thiết bị đầu cuối SQL của mình) Làm cách nào để tách mảng chuỗi trong MySQL?Để tách một chuỗi trong MySQL, bạn cần phải sử dụng hàm SUBSTRING_INDEX do MySQL cung cấp . Hàm SUBSTRING_INDEX() cho phép bạn trích xuất một phần của chuỗi hoàn chỉnh. Cú pháp của hàm như sau. SUBSTRING_INDEX(biểu thức, dấu phân cách, số đếm);
Làm cách nào để tách dữ liệu trong MySQL?Khái niệm MySQL Split xuất hiện nếu bạn định tách chuỗi. Trong MySQL, chúng tôi sử dụng SUBSTRING_INDEX() để tách chuỗi . Nó thường bao gồm ba đối số tôi. e. , chuỗi, dấu phân cách và vị trí. Giá trị chuỗi sẽ được phân chia dựa trên vị trí.
Làm cách nào để tách một chuỗi được phân tách bằng dấu phẩy trong MySQL?Cách tách văn bản được phân tách bằng dấu phẩy (danh sách ID) trong thủ tục lưu trữ MySQL để sử dụng kết quả trong câu lệnh SQL "IN". CHỌN * TỪ bảng WHERE bảng. id IN (splitStringFunction(dấu phẩySeparatedData, ',')); sql.
Làm cách nào để tách một chuỗi trong thủ tục lưu trữ MySQL?Để tách một chuỗi và lặp qua tất cả các giá trị trong thủ tục MySQL, bạn không cần sử dụng hàm REPLACE(). Để hiểu, trước tiên hãy tạo một thủ tục được lưu trữ, sau đó tạo một bảng và gọi thủ tục được lưu trữ với một số giá trị . Giá trị sẽ được chèn vào bảng. |