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

PATINDEX() замяна в MYSQL

Въпреки че няма формален PATINDEX() функция в MySQL, която постига както търсенето на модел на регулярни изрази с върнатия символен индекс, така и комбинация от LOCATE() и REGEXP() , разгледайте дефинирана от потребителя функция, която преминава през всеки знак в дължината на низ и проверява REGEXP модел върху характера. След като бъде създадена, използвайте такава функция в рамките на заявка.

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

Заявка (търси първата цифра в низа)

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. Всички колони се задават на една и съща стойност

  2. Вмъкване на двоични данни в MySQL (без PreparedStatement)

  3. Как да проверя дали колона е празна или нула в MySQL?

  4. Грешка при синтактичния анализ на данните org.json.JSONException:Край на въвеждането при знак 0 на - Android

  5. Предупреждение:mysql_connect():Не мога да се свържа с локален MySQL сървър