MySQL tìm kiếm nhiều cột cho chuỗi
Nó cũng có thể đạt được điều tương tự bằng cách sử dụng lập trình. Bạn cần chọn giá trị trường cột riêng biệt từ Bảng MySQL và lưu trữ giá trị của chúng trong biến đơn sau khi nối giá trị của chúng Show Trường hợp 1. Tôi giả sử, Chúng tôi có cột tên, họ trong Bảng DataBase của chúng tôi. Nối các giá trị cột tên, họ trong một dạng chuỗi đơn Có hai chức năng để làm điều này -
Chức năng trên hoạt động cho nối nhiều cột CONCATHàm này được sử dụng để nối nhiều cột hoặc chuỗi thành một cột duy nhất. Các đối số của phương thức được phân tách bằng dấu phẩy Cú pháp – Liên kết được tài trợCONCAT( column1, column2, … ) OR CONCAT ( string1, string2, … ) Truy vấn MySQL để nối các cột của bảngSELECT CONCAT( firstname, " ", lastname ) AS fullname, salary FROM employees CONCAT_WSHàm Trong bài viết này, chúng tôi xin hướng dẫn các bạn cách tìm các hàng có giá trị giải pháp nhanh chóng
Ví dụ thực tếĐể hiển thị cách tìm các hàng có giá trị
ví dụ 1Trong ví dụ này, chúng ta sẽ chọn tất cả các hàng có giá trị 0 bằng cách sử dụng hàm 6 Bạn có thể sử dụng các đối sánh mẫu để xem qua bất kỳ số lượng hàng nào, nhưng khi số lượng văn bản tăng lên, thao tác đối sánh có thể trở nên khá chậm. Việc tìm kiếm cùng một văn bản trong một số cột chuỗi cũng phổ biến, việc khớp mẫu có xu hướng dẫn đến các truy vấn khó sử dụng SELECT * from Một giải pháp thay thế hữu ích (có sẵn kể từ MySQL 3. 23. 23) là sử dụng tính năng tìm kiếm O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3, được thiết kế để xem qua một lượng lớn văn bản và có thể tìm kiếm đồng thời nhiều cột. Để sử dụng khả năng này, hãy thêm chỉ mục O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 vào bảng của bạn, sau đó sử dụng toán tử O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.5 để tìm kiếm các chuỗi trong cột hoặc các cột được lập chỉ mục. Lập chỉ mục O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 có thể được sử dụng với các bảng MyISAM, cho các cột loại O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.7, O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.8 hoặc O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.9 O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 tìm kiếm được minh họa tốt nhất với phần nội dung văn bản có kích thước hợp lý. Nếu bạn không có bộ dữ liệu mẫu, một số kho lưu trữ văn bản điện tử có sẵn miễn phí có sẵn trên Internet. Đối với các ví dụ ở đây, bản tôi đã chọn là bản văn đầy đủ của Bản Kinh thánh King James (KJV), bản này tương đối lớn và có ưu điểm là được cấu trúc độc đáo theo sách, chương và câu. Do kích thước của nó, bộ dữ liệu này không được bao gồm trong bản phân phối CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;1, nhưng có sẵn dưới dạng bản phân phối CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;2 tại trang web MySQL Cookbook. [] (Xem Phụ lục A. ) Bản phân phối bao gồm một tệp CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;3 chứa các bản ghi câu thơ. Một số hồ sơ mẫu trông như thế này O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife. Mỗi bản ghi chứa các trường sau
Để nhập các bản ghi vào MySQL, hãy tạo một bảng có tên CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;6 giống như thế này CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM; Sau đó tải tệp CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;3 vào bảng bằng cách sử dụng câu lệnh này mysql> Bạn sẽ nhận thấy rằng bảng CREATE TABLE kjv ( bsect ENUM('O','N') NOT NULL, # book section (testament) bname VARCHAR(20) NOT NULL, # book name bnum TINYINT UNSIGNED NOT NULL, # book number cnum TINYINT UNSIGNED NOT NULL, # chapter number vnum TINYINT UNSIGNED NOT NULL, # verse number vtext TEXT NOT NULL # text of verse ) TYPE = MyISAM;6 chứa các cột cho cả hai tên sách (Sáng thế ký, Xuất hành,. ) và số sách (1, 2,. ). Tên và số có sự tương ứng cố định và cái này có thể được bắt nguồn từ cái kia—một sự dư thừa có nghĩa là bảng không ở dạng bình thường. Có thể loại bỏ sự dư thừa bằng cách chỉ lưu trữ số sách (chiếm ít dung lượng hơn tên), sau đó tạo tên khi cần trong kết quả truy vấn bằng cách nối các số vào một bảng ánh xạ nhỏ liên kết từng số sách với tên tương ứng. Nhưng tôi muốn tránh sử dụng phép nối vào thời điểm này. Do đó, bảng bao gồm tên sách để kết quả tìm kiếm có thể được giải thích dễ dàng hơn và số để kết quả có thể được sắp xếp dễ dàng theo thứ tự sách Sau khi điền vào bảng, hãy chuẩn bị nó để sử dụng trong tìm kiếm O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 bằng cách thêm chỉ mục O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3. Điều này có thể được thực hiện bằng cách sử dụng câu lệnh mysql> 1 mysql> 2. []mysql> Để thực hiện tìm kiếm bằng cách sử dụng chỉ mục, hãy sử dụng mysql> 3 để đặt tên cho cột được lập chỉ mục và mysql> 4 để chỉ định văn bản cần tìm. Ví dụ: để trả lời câu hỏi "Cái tên Mizraim có thường xuyên xảy ra không?" mysql> Để biết những câu đó là gì, hãy chọn các cột bạn muốn xem (ví dụ ở đây sử dụng mysql> 6 để kết quả phù hợp hơn với trang)mysql> Kết quả được đưa ra theo thứ tự sách, chương và số câu trong trường hợp cụ thể này, nhưng đó thực sự chỉ là sự trùng hợp. Theo mặc định, O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 tìm kiếm tính toán xếp hạng mức độ liên quan và sử dụng nó để sắp xếp. Để đảm bảo kết quả tìm kiếm được sắp xếp theo cách bạn muốn, hãy thêm mệnh đề mysql> 8 mysql> 9 rõ ràngSELECT bname, cnum, vnum, vtext
FROM kjv WHERE MATCH(vtext) AGAINST(' Bạn có thể bao gồm các tiêu chí bổ sung để thu hẹp tìm kiếm hơn nữa. Các truy vấn sau đây thực hiện các tìm kiếm cụ thể hơn dần dần để tìm hiểu tần suất tên Áp-ra-ham xuất hiện trong toàn bộ KJV, Tân Ước, sách Hê-bơ-rơ và Chương 11 của Hê-bơ-rơ mysql> Nếu bạn muốn sử dụng tiêu chí tìm kiếm bao gồm các cột không phải ______7_______3 khác thường xuyên, bạn có thể tăng hiệu suất của các truy vấn đó bằng cách thêm các chỉ mục thông thường vào các cột đó. Ví dụ: để lập chỉ mục cho các cột số cuốn sách, chương và câu, hãy làm điều này mysql> Các chuỗi tìm kiếm trong truy vấn O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 có thể bao gồm nhiều hơn một từ đơn lẻ và bạn có thể cho rằng việc thêm các từ bổ sung sẽ giúp tìm kiếm cụ thể hơn. Nhưng trên thực tế, điều đó mở rộng nó, bởi vì tìm kiếm O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 trả về các bản ghi có chứa bất kỳ từ nào. Trên thực tế, truy vấn thực hiện tìm kiếm mysql> 3 bất kỳ từ nào. Điều này được minh họa bằng các truy vấn sau, xác định số lượng câu lớn hơn liên tục khi các từ tìm kiếm bổ sung được thêm vàoO Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.0 Để thực hiện tìm kiếm trong đó mỗi từ trong chuỗi tìm kiếm phải có mặt, hãy xem Công thức 4. 14 Nếu bạn muốn sử dụng tìm kiếm O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 tìm kiếm đồng thời qua nhiều cột, hãy đặt tên cho tất cả chúng khi bạn xây dựng chỉ mục O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.1 Để đưa ra truy vấn tìm kiếm sử dụng chỉ mục này, hãy đặt tên cho các cột đó trong danh sách mysql> 3O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.2 O Genesis 1 1 1 In the beginning God created the heaven and the earth. O Exodus 2 20 13 Thou shalt not kill. N Luke 42 17 32 Remember Lot's wife.3 chỉ mục cung cấp một cách nhanh chóng và dễ dàng để thiết lập một công cụ tìm kiếm đơn giản. Một cách để sử dụng khả năng này là cung cấp giao diện dựa trên web cho văn bản được lập chỉ mục. Trang MySQL Cookbook bao gồm một trang tìm kiếm KJV dựa trên web cơ bản thể hiện điều này Làm cách nào để tìm kiếm nhiều giá trị trong MySQL?Để chọn nhiều giá trị, bạn có thể sử dụng mệnh đề where với toán tử OR và IN .
Chỉ mục toàn văn bản nhiều cột có thể được sử dụng nếu vậy khi nào?Các cột trong chỉ mục toàn văn có thể được sắp xếp theo bất kỳ thứ tự nào , nhưng tất cả các cột được chỉ định khi tạo chỉ mục toàn văn phải được tham chiếu trong truy vấn match().
Chúng ta có thể sử dụng nhiều cột trong mệnh đề where không?Nếu bạn muốn so sánh hai hoặc nhiều cột. bạn phải viết một mệnh đề WHERE phức hợp sử dụng các toán tử logic Truy vấn con nhiều cột cho phép bạn kết hợp các điều kiện WHERE trùng lặp thành một mệnh đề WHERE duy nhất .
Có thể sử dụng Groupby với nhiều cột không?Cách sử dụng nhóm theo nhiều cột
. Tất cả các bản ghi có cùng giá trị cho các cột tương ứng được đề cập trong tiêu chí nhóm có thể được nhóm thành một cột duy nhất bằng cách sử dụng nhóm theo kỹ thuật nhiều cột |