对于postgresql,MySQL的PATINDEX是否有任何熟悉的功能。我正在尝试在postgres中创建这样的sql。
SELECT PATINDEX('%schools%', 'W3Schools.com');
抛出错误:
没有函数匹配给定的名称和参数类型。您可能需要 添加显式类型转换
更详细地讲,我试图在Postgresql中获得字符串的单独数字部分和字符串部分。我发现了这样的例子:
SELECT Section
FROM dbo.Section
ORDER BY LEFT(Section, PATINDEX('%[0-9]%', Section)-1), -- alphabetical sort
CONVERT(INT, SUBSTRING(Section, PATINDEX('%[0-9]%', Section), LEN(Section))) -- numerical
答案 0 :(得分:1)
有两种实现方法,如下例:
postgres=# select strpos('W3Schools.com','Schools');
strpos
--------
3
(1 row)
postgres=# select position('Schools' in 'W3Schools.com');
position
----------
3
(1 row)
postgres=# select regexp_matches('hahahabc123zzz', '(abc)(123)');
regexp_matches
----------------
{abc,123}
postgres=# select array_to_string(regexp_matches('hahahabc123zzz', '(abc)(123)'),' ');
array_to_string
-----------------
abc 123
postgres=# select (regexp_matches('hahahabc123zzz', '(abc)(123)'))[1] as a, (regexp_matches('hahahabc123zzz', '(abc)(123)'))[2] as b;
a | b
-----+-----
abc | 123
(1 row)
您想要这个吗? 您可以在此处获取字符串处理的所有功能:https://www.postgresql.org/docs/10/functions-string.html
答案 1 :(得分:1)
您可以尝试使用POSITION()
功能吗?
mdb.models['YourModelName'].parts['YourPartName'].getMassProperties()['mass']