Chuỗi con MySQL giữa hai ký tự

Trong bài viết này mình sẽ chia sẻ câu truy vấn để trích xuất chuỗi con từ trong 2 ký tự đặc biệt hoặc ký hiệu trong sql server. Hoặc chúng ta có thể nói nhận văn bản từ chuỗi được bao bọc giữa hai ký tự giống nhau hoặc khác nhau


Trong các bài viết trước, tôi đã giải thích Cách Xóa hoặc cắt bớt bảng cha bằng cách bỏ tất cả các ràng buộc khóa ngoại và Truy vấn để tìm kiếm bất kỳ văn bản nào trong tất cả các văn bản được lưu trữRemove first or last character from string or column in sql server and Convert or split comma separated string into table rows in sql server and Temporary tables, their types and examples to use


Mô tả. Trong khi làm việc với cơ sở dữ liệu máy chủ sql, tôi nhận được yêu cầu lấy chuỗi con từ trong hai ký tự hoặc ký hiệu cụ thể. Để hoàn thành việc này, chúng ta chỉ cần tìm chỉ mục đầu tiên và cuối cùng của ký tự được chỉ định, sau đó sử dụng hàm chuỗi con, chúng ta có thể trích xuất phần mong muốn như minh họa trong ví dụ bên dưới.


Triển khai. Hãy tạo một ví dụ để xem nó hoạt động.


--Tạo một bảng tạm thời bằng tập lệnh sau

TẠO BẢNG #tb

[

            Mã VARCHAR[ 25 ]

]


--Chèn một số dữ liệu giả vào bảng

CHÈN VÀO #tb GIÁ TRỊ

['BRF/145/23'], ['ZRF/846/63'], ['ABC/123/79']


--Hiển thị dữ liệu giả

CHỌN * TỪ #tb 

Mã số

BRF/145/23

ZRF/846/63

ABC/123/79


Giả sử cần trích xuất văn bản được viết giữa '/'. Sau đó, truy vấn sẽ là.


--Query to extract the desired code

CHỌN SUBSTRING[,CHARINDEX['/',Code]+1,[[[LEN[Code]]-CHARINDEX['/', REVERSE[Code]]]-CHARINDEX['/',Code]]] AS Result FROM #tb 

Kết quả

145

846

123


Lưu ý . Nếu bạn muốn trích xuất dữ liệu giữa các ký tự khác nhau  e. g. nếu dữ liệu của bạn giống như 'BRF/145#23' thì truy vấn sẽ được sửa đổi một chút thành.


CHỌN SUBSTRING[,CHARINDEX['/',Code]+1,[[[LEN[Code]]-CHARINDEX['#', REVERSE[Code]]]-CHARINDEX['/',Code]]] AS Result FROM #tb


  Bây giờ là của bạn.

Một blog chẳng là gì nếu không có phản hồi và nhận xét của độc giả. Vì vậy, vui lòng cung cấp phản hồi có giá trị của bạn để tôi có thể cải thiện blog này và Nếu bạn thích tác phẩm của tôi; . Hãy theo dõi và duy trì kết nối để biết thêm thông tin cập nhật kỹ thuật.

Hàm MySQL SUBSTRING cho phép bạn trích xuất một chuỗi con từ một chuỗi. Bài đăng này xem xét cách sử dụng chuỗi con để trích xuất một số thông tin từ một trường trong cơ sở dữ liệu bằng cột ví dụ chứa dữ liệu XML. Ngoài ra, hãy tham khảo bài đăng trước đây của tôi có tiêu đề "Tìm vị trí của một chuỗi trong một chuỗi bằng MySQL" để biết thêm thông tin về cách sử dụng hàm LOCATION

Báo cáo mẫu

Tại một trong những trang web tôi quản lý, tất cả các yêu cầu và đơn đặt hàng được lưu ở định dạng XML và sau đó được gửi đến hệ thống từ xa, sau đó chúng được lưu vào cơ sở dữ liệu đó. Đối với mục đích kiểm tra, tất cả các yêu cầu và XML liên quan của chúng được đăng nhập vào cơ sở dữ liệu máy chủ web nếu chúng tôi cần chạy một số báo cáo hoặc báo cáo khác trên đó sau này [hoặc gửi lại đơn đặt hàng]

In the example below the table is called enquiry_log and contains, among other fields, a field called "xml" which contains the xml string. There’s an XML node called which contains a code logging which partner website referred the customer to this website.

Mỗi tháng một lần, chúng tôi chạy một báo cáo để nhận các yêu cầu của đối tác từ cơ sở dữ liệu. Sẽ dễ dàng hơn nếu có mã đối tác dưới dạng một cột riêng biệt trong bảng nhưng khi hệ thống được tạo, chúng tôi không cần chạy báo cáo như thế này nên hiện tại, việc trích xuất nó từ XML sẽ dễ dàng hơn

SUSTRING Đối số

SUBSTRING nhận hai hoặc ba đối số. Hai cái đầu tiên là tên chuỗi hoặc cột và vị trí bắt đầu để lấy chuỗi con từ. Đối số thứ ba là độ dài của chuỗi cần trích xuất. Nếu đối số thứ ba bị bỏ qua thì phần còn lại của chuỗi từ độ dài được trả về

Ví dụ SQL

So, in order to get the text between and we need to do this:

SELECT
    SUBSTRING[log.xml, 
      LOCATE['', log.xml]+21, 
      LOCATE['', log.xml] - LOCATE['', log.xml] - 21] 
    AS Referrer_To_Website
FROM 
    enquiry_log AS log

Trong truy vấn SQL ở trên, tham số thứ hai được chuyển đến SUBSTRING[] là cột từ bảng enquiry_log chứa xml

Tham số thứ hai là
LOCATE[‘

This returns the position of the first occurence of in the "xml" column. 21 is then added to it; this is the length of the text and the length needs to be added so SUBSTRING starts getting the substring from the first character after the end of the XML node name.

Tham số thứ ba dành cho độ dài của chuỗi cần trích xuất. Nói một cách đơn giản, công thức để làm điều này là [vị trí của nút mở] trừ [vị trí của nút đóng] trừ [độ dài của nút mở]

Tính toán kết quả cho ví dụ này trông giống như.
ĐỊA ĐIỂM[‘’, nhật ký. xml]
– LOCATE[‘
– 21

Tôi hy vọng điều này tất cả có ý nghĩa. Đây là một loại ví dụ khá cụ thể nhưng minh họa cách bạn có thể trích xuất các chuỗi từ cột MySQL bằng cách sử dụng LOCATE và SUBSTRING

Làm cách nào để lấy một phần chuỗi trong MySQL?

Hàm SUBSTRING[] trích xuất một chuỗi con từ một chuỗi [bắt đầu từ bất kỳ vị trí nào]. Ghi chú. Các hàm SUBSTR[] và MID[] bằng với hàm SUBSTRING[].

Làm cách nào để lấy 3 ký tự đầu tiên của chuỗi trong MySQL?

hàm LEFT[] . Cả số và chuỗi đều được cung cấp làm đối số của hàm. Chuỗi mà từ đó một số ký tự từ bên trái sẽ được trả về.

Làm cách nào để lấy 3 ký tự cuối cùng từ một chuỗi trong MySQL?

CHỌN *TỪ ĐẶT HÀNG TỪ yourTableName THEO QUYỀN[yourColumnName,3] yourSortingOrder ; .

Làm cách nào để lấy 5 ký tự đầu tiên của chuỗi trong MySQL?

Hàm SUBSTRING[] . Một chuỗi. Điểm xuất phát. Độ dài tính bằng ký tự.

Chủ Đề