Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Temukan dan ganti sebagian teks di bidang menggunakan MySQL

Untuk mengganti string tidak tetap, Anda harus menggunakan pembatas string yang ingin Anda ganti. Dalam contoh berikut, pembatasnya adalah START dan END , jadi Anda harus menggantinya dengan yang Anda cari. Saya telah menyertakan kedua opsi:dengan dan tanpa pembatas diganti.

Contoh data dengan asumsi tabel t dengan kolom col :

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

Ini adalah kueri yang membuat keluaran sebelumnya dari col kolom. Tentu saja, gunakan hanya bagian kueri yang Anda perlukan (dengan atau tanpa pembatas diganti).

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

Ini akan berfungsi asalkan START dan END string hadir dalam teks input.

Untuk benar-benar memperbarui data, gunakan UPDATE perintah (menggunakan versi kueri yang benar-benar Anda butuhkan, dalam hal ini, yang diganti dengan pembatas):

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

Dalam kasus khusus Anda, ganti START dengan:

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

dan END dengan:

.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. Fungsi MySQL RAND() – Menghasilkan Angka Acak di MySQL

  2. Bagaimana cara mengoptimalkan kueri MYSQL EAV yang rumit ini?

  3. MySQL pilih di mana kolom tidak kosong

  4. Bagaimana cara mendapatkan jumlah untuk setiap nilai berbeda di kolom lain?

  5. Bagaimana cara memilih beberapa kolom dengan nama yang sama menggunakan kueri asli JPA?