Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:замества появата на низ в поле с изключение на първото

Ако „MyString“ винаги ще се появява като първи термин в полето, това ще работи:

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

Ключовият момент по-горе е, че търсим срещания на „MyString“ с водещ интервал, така че първото срещане в началото на полето ще бъде игнорирано.

Предполагам обаче, че това може да е твърде крехко - какво ще стане, ако първото появяване на "MyString" не е в началото на полето?

в този последен случай имате нужда от следното:

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

Това, което прави, е да раздели полето на две, първата част до и включително първото появяване на „MyString“, а втората част замества всички следващи негови появявания.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Как да създам тази подзаявка?

  2. Помощ за заявка на mysql за йерархичен дисплей

  3. Как мога да дефинирам условни ненулеви ограничения за няколко колони в mySql?

  4. Липсва файл /var/lib/mysql/mysql.sock

  5. Актуализирайте заявката с LEFT JOIN, променлива и автоматично инкремент с помощта на MySQL