Trình so khớp được tạo từ một mẫu bằng cách gọi phương thức của mẫu. Sau khi được tạo, một công cụ đối sánh có thể được sử dụng để thực hiện ba loại thao tác đối sánh khác nhau
Phương thức cố gắng khớp toàn bộ chuỗi đầu vào với mẫu
Phương thức cố gắng khớp chuỗi đầu vào, bắt đầu từ đầu, theo mẫu
Phương thức quét chuỗi đầu vào để tìm chuỗi con tiếp theo khớp với mẫu
Mỗi phương thức này trả về một giá trị boolean cho biết thành công hay thất bại. Thông tin thêm về một trận đấu thành công có thể thu được bằng cách truy vấn trạng thái của trận đấu
Trình so khớp tìm các kết quả phù hợp trong một tập con đầu vào của nó được gọi là vùng. Theo mặc định, khu vực chứa tất cả thông tin đầu vào của trình so khớp. Vùng có thể được sửa đổi thông qua phương thức và được truy vấn thông qua phương thức và. Cách mà các ranh giới khu vực tương tác với một số cấu trúc mẫu có thể được thay đổi. Xem và để biết thêm chi tiết
Lớp này cũng định nghĩa các phương thức để thay thế các chuỗi con phù hợp bằng các chuỗi mới có nội dung có thể được tính từ kết quả phù hợp nếu muốn. Các phương thức và có thể được sử dụng song song để thu thập kết quả vào bộ đệm chuỗi hiện có hoặc phương thức thuận tiện hơn có thể được sử dụng để tạo một chuỗi trong đó mọi chuỗi con phù hợp trong chuỗi đầu vào được thay thế
Trạng thái rõ ràng của đối sánh bao gồm các chỉ số bắt đầu và kết thúc của đối sánh thành công gần đây nhất. Nó cũng bao gồm các chỉ số bắt đầu và kết thúc của chuỗi con đầu vào được ghi lại bởi mỗi chuỗi trong mẫu cũng như tổng số lượng của các chuỗi con đó. Để thuận tiện, các phương thức cũng được cung cấp để trả về các chuỗi con đã bắt này ở dạng chuỗi
Trạng thái rõ ràng của một trình so khớp ban đầu không được xác định; . Trạng thái rõ ràng của công cụ so khớp được tính toán lại bởi mọi thao tác so khớp
Trạng thái ngầm định của bộ đối sánh bao gồm chuỗi ký tự đầu vào cũng như vị trí nối thêm, ban đầu bằng 0 và được cập nhật theo phương thức
Một trình so khớp có thể được đặt lại một cách rõ ràng bằng cách gọi phương thức của nó hoặc, nếu muốn một chuỗi đầu vào mới, phương thức của nó. Việc đặt lại trình so khớp sẽ loại bỏ thông tin trạng thái rõ ràng của nó và đặt vị trí nối thêm thành 0
Mệnh đề
key | value -----+------- a | foo b | bar56 được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng, dựa trên cột liên quan giữa chúng
Hãy xem xét một lựa chọn từ bảng "Đơn hàng"
OrderIDCustomerIDOrderDate1030821996-09-1810309371996-09-1910310771996-09-20
Sau đó, hãy xem một lựa chọn từ bảng "Khách hàng"
Khách hàngIDKhách hàngTênLiên hệTênQuốc gia1Alfreds FutterkisteMaria AndersĐức2Ana Trujillo Emparedados y heladosAna TrujilloMexico3Antonio Moreno TaqueríaAntonio MorenoMexico
Lưu ý rằng cột "CustomerID" trong bảng "Orders" đề cập đến "CustomerID" trong bảng "Customers". Mối quan hệ giữa 2 bảng trên là cột "CustomerID"
Sau đó, chúng ta có thể tạo câu lệnh SQL sau [có chứa
key | value -----+------- a | foo b | bar57], chọn các bản ghi có giá trị khớp trong cả hai bảng
Thí dụ
CHỌN Đơn đặt hàng. OrderID, khách hàng. Tên khách hàng, đơn đặt hàng. OrderDate
TỪ Đơn đặt hàng
INNER THAM GIA KHÁCH HÀNG TRÊN Đơn đặt hàng. CustomerID=Khách hàng. ID khách hàng;
và nó sẽ tạo ra một cái gì đó như thế này
OrderIDCustomerNameOrderDate10308Ana Trujillo Emparedados y helados9/18/199610365Antonio Moreno Taquería11/27/199610383Xung quanh Horn12/16/199610355Xung quanh Horn15/11/199610278Berglunds snabbköp8/12/1996
Các loại THAM GIA SQL khác nhau
Dưới đây là các loại THAM GIA khác nhau trong SQL
key | value -----+------- a | foo b | bar
58. Trả về các bản ghi có giá trị khớp trong cả hai bảngkey | value -----+------- a | foo b | bar
59. Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phảikey | value -----+------- a | foo b | bar
60. Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên tráikey | value -----+------- a | foo b | bar
61. Trả về tất cả các bản ghi khi có sự trùng khớp trong bảng bên trái hoặc bên phải
Kiểm tra bản thân với các bài tập
Tập thể dục
Chèn các phần còn thiếu trong mệnh đề
key | value -----+------- a | foo b | bar56 để nối hai bảng
key | value -----+------- a | foo b | bar63 và
key | value -----+------- a | foo b | bar64, sử dụng trường
key | value -----+------- a | foo b | bar560 trong cả hai bảng làm mối quan hệ giữa hai bảng
Hàm Trả về Kiểu Mô tả Ví dụ Ví dụ Kết quả
key | value -----+------- a | foo b | bar1
key | value -----+------- a | foo b | bar2
key | value -----+------- a | foo b | bar3 Trả về số phần tử trong mảng JSON ngoài cùng.
key | value -----+------- a | foo b | bar4
key | value -----+------- a | foo b | bar5
key | value -----+------- a | foo b | bar6
key | value -----+------- a | foo b | bar7
key | value -----+------- a | foo b | bar8
key | value -----+------- a | foo b | bar9Mở rộng đối tượng JSON ngoài cùng thành một tập hợp các cặp khóa/giá trị.
json_object_keys ------------------ f1 f20
key | value -----+------- a | foo b | bar0
json_object_keys ------------------ f1 f21
json_object_keys ------------------ f1 f22
json_object_keys ------------------ f1 f23 Mở rộng đối tượng JSON ngoài cùng thành một tập hợp các cặp khóa/giá trị. Các giá trị được trả về sẽ thuộc loại
json_object_keys ------------------ f1 f24.
json_object_keys ------------------ f1 f25
key | value -----+------- a | foo b | bar
json_object_keys ------------------ f1 f26
json_object_keys ------------------ f1 f27
json_object_keys ------------------ f1 f28
json_object_keys ------------------ f1 f29Trả về giá trị JSON được trỏ bởi
key | value -----+------- a | foo b | bar10 [tương đương với toán tử
key | value -----+------- a | foo b | bar11].
key | value -----+------- a | foo b | bar12
key | value -----+------- a | foo b | bar13
key | value -----+------- a | foo b | bar14
key | value -----+------- a | foo b | bar15
json_object_keys ------------------ f1 f24 Trả về giá trị JSON được chỉ ra bởi
key | value -----+------- a | foo b | bar10 là
json_object_keys ------------------ f1 f24 [tương đương với toán tử
key | value -----+------- a | foo b | bar19].
key | value -----+------- a | foo b | bar10
key | value -----+------- a | foo b | bar11
key | value -----+------- a | foo b | bar12
key | value -----+------- a | foo b | bar13
key | value -----+------- a | foo b | bar14 Trả về bộ khóa trong đối tượng JSON ngoài cùng.
key | value -----+------- a | foo b | bar15
json_object_keys ------------------ f1 f2
key | value -----+------- a | foo b | bar16
key | value -----+------- a | foo b | bar17
key | value -----+------- a | foo b | bar18 Mở rộng đối tượng trong
key | value -----+------- a | foo b | bar19 thành một hàng có các cột khớp với loại bản ghi được xác định bởi
key | value -----+------- a | foo b | bar20 [xem ghi chú bên dưới].
key | value -----+------- a | foo b | bar21
key | value -----+------- a | foo b | bar1
key | value -----+------- a | foo b | bar22
key | value -----+------- a | foo b | bar23
key | value -----+------- a | foo b | bar24 Mở rộng mảng đối tượng ngoài cùng trong
key | value -----+------- a | foo b | bar19 thành một tập hợp các hàng có cột khớp với loại bản ghi được xác định bởi
key | value -----+------- a | foo b | bar20 [xem ghi chú bên dưới].
key | value -----+------- a | foo b | bar27
key | value -----+------- a | foo b | bar1
key | value -----+------- a | foo b | bar28
key | value -----+------- a | foo b | bar29
key | value -----+------- a | foo b | bar40
key | value -----+------- a | foo b | bar41Mở rộng một mảng JSON thành một tập hợp các giá trị JSON.
key | value -----+------- a | foo b | bar42
key | value -----+------- a | foo b | bar2
key | value -----+------- a | foo b | bar43
key | value -----+------- a | foo b | bar44
key | value -----+------- a | foo b | bar14 Mở rộng một mảng JSON thành một tập hợp các giá trị
json_object_keys ------------------ f1 f24.
key | value -----+------- a | foo b | bar47
key | value -----+------- a | foo b | bar4
key | value -----+------- a | foo b | bar48
key | value -----+------- a | foo b | bar49
json_object_keys ------------------ f1 f24 Trả về loại giá trị JSON ngoài cùng dưới dạng chuỗi văn bản. Các loại có thể là ________ 671, ________ 672, _______ 673, _______ 674,
key | value -----+------- a | foo b | bar75 và
key | value -----+------- a | foo b | bar76.
key | value -----+------- a | foo b | bar77
key | value -----+------- a | foo b | bar74
key | value -----+------- a | foo b | bar79
key | value -----+------- a | foo b | bar60
key | value -----+------- a | foo b | bar61 Tạo bản ghi tùy ý từ đối tượng JSON [xem ghi chú bên dưới]. Như với tất cả các hàm trả về
key | value -----+------- a | foo b | bar61, người gọi phải xác định rõ ràng cấu trúc của bản ghi bằng mệnh đề
key | value -----+------- a | foo b | bar63.
key | value -----+------- a | foo b | bar64
key | value -----+------- a | foo b | bar7
key | value -----+------- a | foo b | bar65
key | value -----+------- a | foo b | bar66
key | value -----+------- a | foo b | bar67 Xây dựng một bộ bản ghi tùy ý từ một mảng đối tượng JSON [xem ghi chú bên dưới]. Như với tất cả các hàm trả về
key | value -----+------- a | foo b | bar61, người gọi phải xác định rõ ràng cấu trúc của bản ghi bằng mệnh đề
key | value -----+------- a | foo b | bar63.
key | value -----+------- a | foo b | bar70
key | value -----+------- a | foo b | bar6
key | value -----+------- a | foo b | bar71
key | value -----+------- a | foo b | bar72
json_object_keys ------------------ f1 f28
json_object_keys ------------------ f1 f29Trả về
key | value -----+------- a | foo b | bar19 với tất cả các trường đối tượng có giá trị null bị bỏ qua. Các giá trị null khác không bị ảnh hưởng.
key | value -----+------- a | foo b | bar76
key | value -----+------- a | foo b | bar77
key | value -----+------- a | foo b | bar78
json_object_keys ------------------ f1 f29Trả về
key | value -----+------- a | foo b | bar00 với phần được chỉ định bởi
key | value -----+------- a | foo b | bar01 được thay thế bằng
key | value -----+------- a | foo b | bar02 hoặc thêm
key | value -----+------- a | foo b | bar02 nếu
key | value -----+------- a | foo b | bar04 là đúng [mặc định là
key | value -----+------- a | foo b | bar05] và mục được chỉ định bởi
key | value -----+------- a | foo b | bar01 không tồn tại. Cũng giống như các toán tử hướng đường dẫn, các số nguyên âm xuất hiện trong
key | value -----+------- a | foo b | bar01 được tính từ cuối mảng JSON
key | value -----+------- a | foo b | bar08
key | value -----+------- a | foo b | bar09
key | value -----+------- a | foo b | bar10
key | value -----+------- a | foo b | bar11
key | value -----+------- a | foo b | bar12
json_object_keys ------------------ f1 f29Trả về
key | value -----+------- a | foo b | bar00 với
key | value -----+------- a | foo b | bar02 được chèn vào. Nếu phần
key | value -----+------- a | foo b | bar00 được chỉ định bởi
key | value -----+------- a | foo b | bar01 nằm trong một mảng JSONB, thì
key | value -----+------- a | foo b | bar02 sẽ được chèn vào trước hoặc sau mục tiêu nếu
key | value -----+------- a | foo b | bar19 là đúng [mặc định là
key | value -----+------- a | foo b | bar20]. Nếu phần
key | value -----+------- a | foo b | bar00 được chỉ định bởi
key | value -----+------- a | foo b | bar01 nằm trong đối tượng JSONB, thì
key | value -----+------- a | foo b | bar02 sẽ chỉ được chèn nếu
key | value -----+------- a | foo b | bar00 không tồn tại. Cũng giống như các toán tử hướng đường dẫn, các số nguyên âm xuất hiện trong
key | value -----+------- a | foo b | bar01 được tính từ cuối mảng JSON
key | value -----+------- a | foo b | bar26
key | value -----+------- a | foo b | bar27
key | value -----+------- a | foo b | bar28
key | value -----+------- a | foo b | bar29
key | value -----+------- a | foo b | bar30
json_object_keys ------------------ f1 f24Trả về
key | value -----+------- a | foo b | bar19 dưới dạng văn bản JSON được thụt lề.
key | value -----+------- a | foo b | bar33
key | value -----+------- a | foo b | bar7
key | value -----+------- a | foo b | bar34
key | value -----+------- a | foo b | bar75 Kiểm tra xem đường dẫn JSON có trả về bất kỳ mục nào cho giá trị JSON được chỉ định hay không
key | value -----+------- a | foo b | bar36
key | value -----+------- a | foo b | bar05
key | value -----+------- a | foo b | bar38
key | value -----+------- a | foo b | bar75 Trả về kết quả kiểm tra vị từ đường dẫn JSON cho giá trị JSON được chỉ định. Chỉ mục đầu tiên của kết quả được tính đến. Nếu kết quả không phải là Boolean, thì trả về
key | value -----+------- a | foo b | bar76
key | value -----+------- a | foo b | bar41
key | value -----+------- a | foo b | bar05
key | value -----+------- a | foo b | bar43
key | value -----+------- a | foo b | bar41 Nhận tất cả các mục JSON được trả về bởi đường dẫn JSON cho giá trị JSON được chỉ định
key | value -----+------- a | foo b | bar45
key | value -----+------- a | foo b | bar0
key | value -----+------- a | foo b | bar46
json_object_keys ------------------ f1 f29 Nhận tất cả các mục JSON được trả về bởi đường dẫn JSON cho giá trị JSON đã chỉ định và bao kết quả thành một mảng
key | value -----+------- a | foo b | bar48
key | value -----+------- a | foo b | bar49
key | value -----+------- a | foo b | bar50
json_object_keys ------------------ f1 f29 Nhận mục JSON đầu tiên được trả về bởi đường dẫn JSON cho giá trị JSON được chỉ định. Trả về
key | value -----+------- a | foo b | bar52 không có kết quả
key | value -----+------- a | foo b | bar53
key | value -----+------- a | foo b | bar54