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

MySQL:thay thế sự xuất hiện của một chuỗi trong trường ngoại trừ trường đầu tiên

Nếu "MyString" luôn xuất hiện dưới dạng thuật ngữ đầu tiên trong trường, thì điều này sẽ hoạt động:

update MyTable set MyField = replace(MyField, ' MyString','')

Điểm mấu chốt ở trên là chúng tôi tìm kiếm các lần xuất hiện của "MyString" với khoảng trắng ở đầu, vì vậy lần xuất hiện đầu tiên ở đầu trường sẽ bị bỏ qua.

Tuy nhiên, suy đoán của tôi là điều này có thể quá mong manh - điều gì sẽ xảy ra nếu lần xuất hiện đầu tiên của "MyString" không phải ở đầu trường?

trong trường hợp thứ hai này, bạn cần những thứ sau:

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
        LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
        REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    )

Điều này làm là chia trường thành hai, phần đầu tiên cho đến và bao gồm lần xuất hiện đầu tiên của "MyString" và phần thứ hai thay thế tất cả các lần xuất hiện tiếp theo của nó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh Bash để chèn giá trị trong MySQL

  2. Sự cố trình điều khiển Mysql

  3. mysql concat và insert vào không hoạt động

  4. Đếm các bản ghi bắt đầu bằng các chữ cái cụ thể

  5. Bảng mục tiêu của UPDATE không thể cập nhật được