Đâ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. comghi 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;1idaddress1www. 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.%';
0Giả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.%';
3Giả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.%';
6Kết quả là
substringexamplegooglelearnsqlThả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