Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm và thay thế một phần văn bản trong một trường bằng MySQL

Để thay thế một chuỗi không cố định, bạn nên sử dụng các dấu phân cách của chuỗi mà bạn muốn thay thế. Trong ví dụ sau, các dấu phân cách là STARTEND , vì vậy bạn nên thay thế chúng bằng những thứ bạn đang tìm kiếm. Tôi đã bao gồm cả hai tùy chọn:có và không thay thế dấu phân cách.

Dữ liệu mẫu giả sử một bảng t với một cột col :

|                COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND |                       ab |                  abSTARTEND |
|  abcSTARTxxxxxENDd |                     abcd |                abcSTARTENDd |
|   abcdSTARTxxENDef |                   abcdef |              abcdSTARTENDef |
|  abcdeSTARTxENDfgh |                 abcdefgh |            abcdeSTARTENDfgh |
| abcdefSTARTENDghij |               abcdefghij |          abcdefSTARTENDghij |

Đây là truy vấn tạo đầu ra trước đó từ col cột. Tất nhiên, chỉ sử dụng phần truy vấn mà bạn cần (có hoặc không thay thế dấu phân cách).

SELECT col,
  INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '') with_delimiters_replaced,
  INSERT(col,
     LOCATE(@start, col) + CHAR_LENGTH(@start),
     LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start),
     '') without_delimiters_replaced
FROM t, (SELECT @start := 'START', @end := 'END') init

Điều này sẽ hoạt động với cả STARTEND chuỗi có trong văn bản đầu vào.

Để thực sự cập nhật dữ liệu, hãy sử dụng UPDATE lệnh (sử dụng phiên bản truy vấn bạn thực sự cần, trong trường hợp này là phiên bản có dấu phân cách được thay thế):

UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '')

Trong trường hợp cụ thể của bạn, hãy thay thế START với:

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/

END với:

.js"></script> 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác định xem chỉ mục bảng MySQL có tồn tại hay không trước khi tạo

  2. group_concat MYSQL dòng mới

  3. Định dạng ngày trong MySQL SELECT dưới dạng ISO 8601

  4. Truy vấn con so với tham gia

  5. Cần trợ giúp về lỗi perl khi sử dụng DBD ::mysql