sql >> データベース >  >> RDS >> Mysql

MYSQLでのPATINDEX()の置換

    正式なPATINDEX()はありませんが 返された文字インデックスを使用した正規表現パターンルックアップ、またはLOCATE()の組み合わせの両方を実現するMySQLの関数 および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. SQLite Lower()のしくみ

    2. UPDATEクエリ後のPDOrowCount()は、変更が行われていない行と存在しない行の違いを示すことができますか?

    3. PHPの致命的なエラー:クラス'PDO'が見つかりません

    4. PostgreSQLでユーザーをスーパーユーザーに変更する方法