MySQL xóa chuỗi giữa hai ký tự

Đây là mã để thay thế tất cả văn bản giữa hai ký tự cụ thể

THEO Câu hỏi phỏng vấn hay nhất NGÀY 18 tháng 8 năm 2020

Ví dụ

function replace_all_text_between[$str, $start, $end, $replacement] {

$replacement = $start. thay thế $. $ kết thúc;

    $start = preg_quote[$start, '/'];
    $end = preg_quote[$end, '/'];
    $ . *?][{$end}]/";

    return preg_replace[$regex,$replacement,$str];
}

Xin chào

Tôi phải thay thế các chuỗi con nằm giữa hai ký tự.
Ví dụ. Tôi phải thay thế hoặc xóa tất cả các ký tự
ở giữa ' \'.
Vì vậy, tôi có chuỗi abcde\fgh\ikl và tôi muốn lấy. abcdeikl.

Tôi sử dụng câu lệnh chọn sau

REPLACE[ColumnName, SUBSTRING[[ColumnName, CHARINDEX['\', ColumnName],
CHARINDEX['\', ColumnName, CHARINDEX['\', ColumnName] + 1
CHARINDEX['\', ColumnName + 1], '']

Có cách nào hiệu quả hơn không?

Cảm ơn

Tôi cần thay thế văn bản giữa hai ký tự cụ thể từ một cột trong bảng mysql. ví dụ. trong cột 'email' của tôi, tôi muốn thay 'gmail' từ '@gmail'. com' và thay thế bằng 'yahoo'. Tức là tìm văn bản giữa '@' và '. ', và thay thế văn bản. Đây là những gì tôi đã cố gắng

UPDATE users
SET email= REPLACE [email, '%@%.%', 'test']
WHERE email LIKE %@%.%;

Tôi nghĩ rằng các ký tự đại diện như vậy chỉ được sử dụng trong mệnh đề WHERE. Làm cách nào để đặt nó trong hàm REPLACE[]? . Cảm ơn

- stackoverflow. com

ghi bàn. 3

câu trả lời được chấp nhận

Nếu bạn muốn thay thế "@gmail. " với" @yahoo. ", sau đó chỉ cần làm

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';

Nếu bạn muốn tên miền luôn là gmail, thì bạn có thể thử tạo lại email

UPDATE users
    SET email = CONCAT[substring_index[email, '@', 1], '@',
                       'yahoo',
                       substring_index[email, '.', -1]
                      ]
    WHERE email LIKE '%@%.%';

Điều này không chính xác 100% -- sự cố của bạn không được xác định khi có nhiều "@" hoặc ". " trong

UPDATE users
    SET email = CONCAT[substring_index[email, '@', 1], '@',
                       'yahoo',
                       substring_index[email, '.', -1]
                      ]
    WHERE email LIKE '%@%.%';
2. Nhưng nó có thể làm những gì bạn cần

Cơ sở dữ liệu của chúng tôi có một bảng tên là

UPDATE users
    SET email = CONCAT[substring_index[email, '@', 1], '@',
                       'yahoo',
                       substring_index[email, '.', -1]
                      ]
    WHERE email LIKE '%@%.%';
3 với dữ liệu trong các cột
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
0 và
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
1. Chúng tôi muốn xóa '
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
2' ở đầu và '
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
3' ở cuối mỗi
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
1

idaddress1www. ví dụ. com2www. Google. com3www. tìm hiểu. com

Giải pháp 1

Để xóa 4 ký tự đầu tiên

________số 8

Để xóa 4 ký tự cuối cùng

SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;

Để xóa 4 ký tự đầu và 4 ký tự cuối

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
0

Giải pháp 2

Để xóa 4 ký tự đầu tiên

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
1

Để xóa 4 ký tự cuối cùng

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
2

Để xóa 4 ký tự đầu và 4 ký tự cuối

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
3

Giải pháp 3

Để xóa tất cả các ký tự trước ký tự thứ hai ‘. ' từ bên phải

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
4

Để xóa tất cả các ký tự sau ký tự thứ hai ‘. ' từ bên trái

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
5

Để xóa tất cả các ký tự sau ký tự thứ hai ‘. ’ từ bên trái, sau đó xóa tất cả các ký tự trước ký tự ‘ đầu tiên. ' từ bên phải

UPDATE users
    SET email = REPLACE[email, '@gmail.', '@yahoo.']
WHERE email LIKE '%@gmail.%';
6

Kết quả là

substringexamplegooglelearnsql

Thảo luận

Cả giải pháp thứ nhất và thứ hai đều xóa một số ký tự được chỉ định khỏi văn bản bằng hàm

SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
5 hoặc
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
6.
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
5 là từ đồng nghĩa với
SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
6. Cả hai đều yêu cầu chuỗi và vị trí bắt đầu làm đối số. Đối số cuối cùng, xác định số lượng ký tự cần trích xuất, là tùy chọn. Nếu đối số cuối cùng bị bỏ qua, toàn bộ chuỗi [từ điểm bắt đầu] sẽ được trả về

Trong giải pháp thứ ba, hàm

SELECT
SUBSTR[address, 1, LENGTH[address] -4] AS substring
FROM web_address;
9 xóa văn bản trước hoặc sau các ký tự được chỉ định. Nó yêu cầu đối số là chuỗi, ký tự và số lượng phiên bản của ký tự sẽ gặp ở nơi bắt đầu trích xuất văn bản

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 để thay thế một phần của chuỗi trong MySQL?

Sử dụng hàm REPLACE[] của MySQL để thay thế một chuỗi con [i. e. từ, ký tự, v.v. ] với một chuỗi con khác và trả về chuỗi đã thay đổi.

Làm cách nào để xóa các ký tự đặc biệt khỏi chuỗi trong truy vấn chọn MySQL?

Bạn có thể xóa các ký tự đặc biệt khỏi trường cơ sở dữ liệu bằng hàm REPLACE[] .

Làm cách nào để xóa chuỗi khỏi chuỗi trong MySQL?

Xóa các ký tự khỏi chuỗi bằng cách sử dụng TRIM[] . Hàm TRIM[] được sử dụng để xóa bất kỳ ký tự/khoảng trắng nào khỏi đầu/cuối hoặc cả hai khỏi chuỗi.

Chủ Đề