Есть ли у кого-нибудь образец кода, где я могу удалить все специальные символы из данных, хранящихся в MYSQL?
Мне нужно удалить следующие специальные символы:
: ~! @# $% *() _ + {} []; ': "< > ?
Попробуйте это... Это выглядит ужасно, но работает
SELECT * FROM Film where REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Film.name,':',''),'~',''),'!',''),'@',''),'#',''),'$',''),'%',''),'*',''),'(',''),')',''),'_',''),'+',''),'{',''),'}',''),'[',''),']',''),';',''),'''',''),':',''),'"',''),'<',''),'>',''),'?','') = ?
Это также будет выделять пробел:
SELECT * FROM Film where REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Film.name,':',''),'~',''),'!',''),'@',''),'#',''),'$',''),'%',''),'*',''),'(',''),')',''),'_',''),'+',''),'{',''),'}',''),'[',''),']',''),';',''),'''',''),':',''),'"',''),'<',''),'>',''),'?',''),' ','') = ?
name_search
для столбца без специальных символов? Вы можете обновлять его каждую ночь, как этот UPDATE Film SET name_search = REPLACE....(name, ....)
Тогда вы можете запустить поиск по name_search, и замена будет уже выполнена. Это также позволит вам использовать оператор LIKE и более эффективно использовать индексы, что ускорит процесс