没有与 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
归档时间: |
|
查看次数: |
2832 次 |
最近记录: |