Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mySQL ustawił varchar bez znaków specjalnych

Metoda 1:

Możesz użyć REPLACE() metoda usuwania znaków specjalnych w mysql, nie wiem jednak, czy jest bardzo wydajna. Ale powinno działać.

Jak poniżej:

SELECT Replace(Replace(product_name,'@',''),'+','')  as prod_type
From Table1

Pokaz skrzypiec

Metoda 2:

Jeśli masz wszystkie inne znaki specjalne, skorzystaj z tego (Źródło )

-- ---------------------------- 
-- Function structure for `udf_cleanString` 
-- ---------------------------- 
DROP FUNCTION IF EXISTS `udf_cleanString`; 
DELIMITER ;; 
CREATE FUNCTION `udf_cleanString`(`in_str` varchar(4096)) RETURNS varchar(4096) CHARSET utf8 
BEGIN    
      DECLARE out_str VARCHAR(4096) DEFAULT ''; 
      DECLARE c VARCHAR(4096) DEFAULT ''; 
      DECLARE pointer INT DEFAULT 1; 

      IF ISNULL(in_str) THEN 
            RETURN NULL; 
      ELSE 
            WHILE pointer <= LENGTH(in_str) DO 

                  SET c = MID(in_str, pointer, 1); 

                  IF ASCII(c) > 31 AND ASCII(c) < 127 THEN 
                        SET out_str = CONCAT(out_str, c); 
                  END IF; 

                  SET pointer = pointer + 1; 
            END WHILE; 
      END IF; 

      RETURN out_str; 
END 
;; 
DELIMITER ;

Następnie po prostu wywołaj funkcję w następujący sposób:

SELECT product_name, udf_cleanString(product_name) AS 'product_Type' 
FROM table1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. używanie sql concat() w django do łączenia dwóch kolumn

  2. Jak połączyć dwa zapytania aktualizacyjne o różnym warunku gdzie?

  3. jqGrid Act Dziwne ponowne ładowanie danych po wstawieniu i aktualizacji

  4. Jak uruchomić klaster MySQL lub MariaDB Galera — zaktualizowano

  5. Dołącz do dwóch tabel w MySQL, zwracając tylko jeden wiersz z drugiej tabeli