2
我需要的Postgres相当于SQL函数patindexSQL PATINDEX等同于PostgreSQL的
我需要的Postgres相当于SQL函数patindexSQL PATINDEX等同于PostgreSQL的
的没有完全等效于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, '%'), '%', '.*?'), '_', '.') || ')'
))[ 1 ]
LIMIT 1
)
)
,0
)
;
$BODY$ LANGUAGE 'sql' IMMUTABLE;
例子:
SELECT patindex('%e_t%', 'Test String');
SELECT patindex('%S_r%', 'Test String');
SELECT patindex('%x%', 'Test String');
的Postgres提供了完整的支持正则表达式。它比SQL Server的'patindex()'更强大,更标准。 –
没有直接等同于'patindex'(尽管可以很容易地编写它)。但是,如果您向我们展示原始查询,可能在Postgres中有更好的选择(正如Gordon所说:Postgres的正则表达式支持比SQL Server的更复杂) –
我想要一个带有SQL名称和功能的Postgres函数“ Patindex“功能。我正在将SQL查询转换为Postgres等效的,所以如果我在SQl中遇到Patindex中的函数,我希望在Postgres中也可以使用相同的函数 – Priya