Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Penggantian PATINDEX() di MYSQL

Meskipun tidak ada PATINDEX() resmi fungsi di MySQL yang mencapai pencarian pola regex dengan indeks karakter yang dikembalikan, atau kombinasi LOCATE() dan REGEXP() , pertimbangkan fungsi Buatan Pengguna yang mengulang setiap karakter dalam panjang string dan memeriksa REGEXP pola pada karakter. Setelah dibuat, gunakan fungsi sebaris kueri.

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

Kueri (mencari digit pertama dalam string)

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. database eksternal dengan Adobe CQ5?

  2. Bagaimana cara mengubah susunan database, tabel, kolom?

  3. Hubungkan Java ke database MySQL

  4. Hilangkan baris duplikat dalam pernyataan SELECT PostgreSQL

  5. Cara menggunakan kode MySql dan Entity Framework 4.1 terlebih dahulu