nca*_*ank 7

没有与 SQL Server 的 PATINDEX 函数完全相同的函数。您可以根据需要使用其他字符串函数。这是文档: https: //www.postgresql.org/docs/current/static/functions-string.html

但如果您需要完全相同的功能,您可以编写一个“包装器”,如下所示:

CREATE OR REPLACE FUNCTION "patindex"( "pattern" VARCHAR, "expression" VARCHAR ) RETURNS INT AS $BODY$
SELECT
    COALESCE(
        STRPOS(
             $2
            ,(
                SELECT
                    ( REGEXP_MATCHES(
                        $2
                        ,'(' || REPLACE( REPLACE( TRIM( $1, '%' ), '%', '.*?' ), '_', '.' ) || ')'
                        ,'i'
                    ) )[ 1 ]
                LIMIT 1
            )
        )
        ,0
    )
;
$BODY$ LANGUAGE 'sql' IMMUTABLE;
Run Code Online (Sandbox Code Playgroud)

例子:

SELECT patindex( '%e_t%', 'Test String' );
Run Code Online (Sandbox Code Playgroud)

2

SELECT patindex( '%S_r%', 'Test String' );
Run Code Online (Sandbox Code Playgroud)

6

SELECT patindex( '%x%', 'Test String' );
Run Code Online (Sandbox Code Playgroud)

0