Làm nổ MySQL

TẠO BẢNG bảng1 (tên varchar (255) không null mặc định ''); . tên. +---------------+. bob, jim, larry. . sam, jess. . xì hơi. +---------------+   CHỌN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(bảng1. tên, ',', j. whichval), ',', -1)) như đã phát nổ TỪ bảng1 THAM GIA (CHỌN '1' as whichval UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT . whichval<= 1+LENGTH(bảng1. tên) - LENGTH(REPLACE(bảng1. tên,',',''))   +----------+. phát nổ. +-----------+. bồng bềnh. . sam. . xì hơi. . gim. . jesse. . larry. +-----------+

phát nổ cột mảng thành hàng.

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
9 sẽ trả về NULL, trong khi
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'
0 là NULL hoặc trống.
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'
1 và
CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
9 đều giữ các phần tử NULL lồng nhau của mảng

Không lưu trữ dữ liệu csv trong một cột. Bạn cần tìm hiểu về Chuẩn hóa cơ sở dữ liệu. Mỗi phần dữ liệu phải nằm trong hàng riêng của nó

Và bạn thường không nên lưu trữ HTML trong cơ sở dữ liệu

Có rất nhiều ví dụ về lược đồ cơ sở dữ liệu phim mà bạn có thể học hỏi từ đó. Cái này có lẽ sẽ được giúp đỡ

https. //www. w3resource. com/sql-bài tập/phim-cơ sở dữ liệu-bài tập/index. php

Ngoài ra, trong đoạn mã của bạn, bạn tạo một biến không có gì nhưng vẫn sử dụng biến ban đầu. Đặt mã của bạn trên các dòng đơn không được khuyến khích và khó đọc và gỡ lỗi hơn. Hãy xem Hướng dẫn về phong cách viết mã PSR-2

php-fig. tổ chức

Làm nổ MySQL

PSR-2. Hướng dẫn kiểu viết mã - PHP-FIG

Chúng tôi là một nhóm các dự án PHP đã được thành lập với mục tiêu là nói về những điểm chung giữa các dự án của chúng tôi và tìm cách chúng tôi có thể làm việc cùng nhau tốt hơn

Làm nổ MySQL
web148

Nhân tiện, trước khi tiếp tục, còn chế độ xem thay vì bảng dành cho phim__actors thì sao?

Tôi đã suy nghĩ về điều này sau câu trả lời trước của tôi

Làm nổ MySQL
SamA74

Có thể không chỉ là bảng “Phim”, mà còn có bảng “Diễn viên”, cùng với Bảng tra cứu để ghép các diễn viên vào phim và cũng có thể để ghép bảng “Nhân vật”

Nhìn nhận lại, có thể ranh giới giữa cách thức một cá nhân tham gia vào quá trình làm phim bị mờ đi. Việc diễn viên trở thành đạo diễn, nhà sản xuất, biên kịch và thậm chí cả nhân vật là chuyện bình thường. Nhà làm phim có thể trở thành một nhân vật trong phim tiểu sử, hoặc khi ai đó xuất hiện với tư cách là chính họ.
Có thể tốt hơn nếu có một bảng chung về “mọi người” và tra cứu để xác định sự tham gia của họ trong bất kỳ bộ phim nào, với tư cách là diễn viên, đạo diễn, nhà sản xuất, nhân vật, v.v.

Một bảng "mọi người" có thể mở rộng để bao gồm những người bên ngoài thế giới điện ảnh, như một phần của cơ sở dữ liệu lớn hơn

Đáng ngạc nhiên là MySQL không có chức năng dành riêng cho hoạt động này trái ngược với split_part trong PostgreSQL. May mắn thay, nó có hàm SUBSTRING_INDEX() thực hiện hầu hết những gì chúng ta cần

Từ tài liệu chính thức

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
0

Trả về chuỗi con từ chuỗi str trước khi đếm số lần xuất hiện của dấu phân cách. Nếu số đếm là dương, mọi thứ ở bên trái của dấu phân cách cuối cùng (đếm từ bên trái) được trả về. Nếu số đếm 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) được trả về.

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
1 thực hiện khớp phân biệt chữ hoa chữ thường khi tìm kiếm dấu phân cách

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
        -> 'mysql.com'

Chức năng này an toàn cho nhiều byte

Các định nghĩa

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');

Dung dịch

Giả sử chúng tôi muốn tìm tất cả nhân viên làm việc ở một tiểu bang nhất định (ví dụ:

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
2), đây là trường thứ tư trong cột chứa địa chỉ dưới dạng các giá trị được phân tách bằng dấu phẩy

Với chức năng

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
3, chúng tôi sẽ có thể trích xuất mọi thứ cho đến cột thứ tư chứa trạng thái

SELECT SUBSTRING_INDEX(address, ',', 4) FROM employees;
+-----------+------------------------------------+
| name      | SUBSTRING_INDEX(address, ',', 4)   |
+-----------+------------------------------------+
| John Doe  | 4225 Collins Street,Apt. A,Erie,PA | 
| Bob Smith | 234 Main Street,,Erie,PA           | 
+-----------+------------------------------------+

Bây giờ chúng ta biết rằng trạng thái sẽ luôn là trường cuối cùng trong giá trị kết quả. Vì hàm

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
1 cho phép sử dụng các giá trị âm để trích xuất các trường đếm từ bên phải nên chúng tôi sẽ sử dụng khả năng này để trích xuất trường ngoài cùng bên phải có chứa chữ viết tắt của tiểu bang

________số 8

Giải pháp cuối cùng để tất cả nhân viên làm việc ở một trạng thái nhất định được hiển thị bên dưới

SELECT name FROM employees WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(address, ',', 4), ',', -1)='PA';
+-----------+
| name      |
+-----------+
| John Doe  | 
| Bob Smith | 
+-----------+

Hãy cẩn thận

Một điều cần lưu ý về

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
1 là hàm trả về toàn bộ chuỗi nếu trường được yêu cầu không tồn tại

Ví dụ:

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
6 trả về địa chỉ đầy đủ

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
2

Sau đó, cố gắng trích xuất trường thứ sáu bằng

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
7 sẽ cung cấp cho chúng tôi mã zip (trường thứ năm) sai

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
4

Một cách giải quyết khả thi cho vấn đề này là kiểm tra xem số lượng trường có lớn hơn hoặc bằng chỉ mục được yêu cầu hay không và sau đó nhập mã ở trên hoặc trả về chuỗi trống nếu chỉ mục trường không hợp lệ

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
5

sử dụng có thể

Trong hầu hết các trường hợp, tốt hơn là sử dụng một bảng tra cứu riêng biệt hoặc một cột cho từng trường thay vì lưu trữ dữ liệu dưới dạng các giá trị được phân tách bằng dấu phẩy để tra cứu sau này

Tuy nhiên, có thể có những trường hợp hiếm hoi mà thủ thuật trên có thể hữu ích. Ví dụ: gần đây tôi cần trả về một danh sách các giá trị từ hàm do người dùng xác định và cách duy nhất để làm điều đó là trả về một chuỗi chứa các giá trị được phân tách bằng dấu phẩy. Cuối cùng tôi đã sử dụng

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
1 để sắp xếp kết quả theo một trong các trường

Tìm kiếm trong cột chứa các giá trị được phân tách bằng dấu phẩy

MySQL có một hàm chuyên dụng FIND_IN_SET() trả về chỉ mục trường nếu giá trị được tìm thấy trong một chuỗi chứa các giá trị được phân tách bằng dấu phẩy

Ví dụ: câu lệnh sau trả về chỉ mục dựa trên một giá trị

CREATE TABLE employees (
   id SERIAL,
   name VARCHAR(255),
   address TEXT,
   PRIMARY KEY (id)
);

INSERT INTO employees (id, name, address) VALUES 
(1, 'John Doe', '4225 Collins Street,Apt. A,Erie,PA,16510'),
(2, 'Bob Smith', '234 Main Street,,Erie,PA,16512');
9 trong chuỗi
SELECT SUBSTRING_INDEX(address, ',', 4) FROM employees;
+-----------+------------------------------------+
| name      | SUBSTRING_INDEX(address, ',', 4)   |
+-----------+------------------------------------+
| John Doe  | 4225 Collins Street,Apt. A,Erie,PA | 
| Bob Smith | 234 Main Street,,Erie,PA           | 
+-----------+------------------------------------+
0

Phát nổ trong SQL là gì?

Biểu thức tập hợp hàng EXPLODE chấp nhận một biểu thức hoặc giá trị của một trong hai loại SQL. ARRAY, SQL. MAP hoặc IEnumerable và giải nén (mở rộng) các giá trị thành một tập hợp hàng . Nếu EXPLODE được áp dụng trên một phiên bản SQL.

Làm cách nào để ngắt chuỗi trong MySQL?

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í.

Nó có nghĩa là gì để nổ một mảng?

Redis và PHP . Chức năng phát nổ trong PHP cho phép chúng tôi chia một chuỗi thành nội dung nhỏ hơn bằng dấu ngắt. Dấu ngắt này được gọi là dấu phân cách. Split a string into pieces of elements to form an array". The explode function in PHP enables us to break a string into smaller content with a break. This break is known as the delimiter.

Chức năng phát nổ là gì?

explode() là một hàm dựng sẵn trong PHP dùng để tách một chuỗi thành nhiều chuỗi khác nhau . Hàm phát nổ () tách một chuỗi dựa trên dấu phân cách chuỗi, i. e. nó phân tách chuỗi bất cứ nơi nào xuất hiện ký tự phân cách. Hàm này trả về một mảng chứa các chuỗi được tạo bằng cách tách chuỗi ban đầu.