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

Zastąpienie PATINDEX() w MYSQL

Chociaż nie ma formalnej PATINDEX() funkcja w MySQL, która osiąga zarówno wyszukiwanie wzorca regex ze zwróconym indeksem znaków, jak i kombinację LOCATE() i REGEXP() , rozważ funkcję zdefiniowaną przez użytkownika, która zapętla każdy znak długości łańcucha i sprawdza REGEXP wzór na charakter. Po utworzeniu użyj takiej funkcji w wierszu zapytania.

DROP FUNCTION IF EXISTS PatIndex;

DELIMITER $$

CREATE FUNCTION PatIndex(pattern VARCHAR(255), tblString VARCHAR(255)) RETURNS INTEGER
    DETERMINISTIC
BEGIN

    DECLARE i INTEGER;
    SET i = 1;

    myloop: WHILE (i <= LENGTH(tblString)) DO

        IF SUBSTRING(tblString, i, 1) REGEXP pattern THEN
            RETURN(i);
            LEAVE myloop;        
        END IF;    

        SET i = i + 1;

    END WHILE; 

    RETURN(0);

END

Zapytanie (wyszukuje pierwszą cyfrę w ciągu)

SELECT mystring, PatIndex('[0-9]', mystring) As FirstNumberCharacter
FROM myTable


  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:Optymalizacja znajdowania super węzła w zagnieżdżonym drzewie zestawów

  2. Mysql Kopiuj bazę danych z serwera na serwer jednym poleceniem

  3. Sformatuj numer na numer skrócony

  4. Jak wyeksportować dane z SQL Server 2005 do MySQL

  5. Zaloguj się do pliku przez PHP lub zaloguj się do bazy danych MySQL - co jest szybsze?