字符串中第一个非数字字符的位置

时间:2017-07-22 12:02:52

标签: postgresql

如何在字符串中找到第一个非数字字符的位置?

功能位置似乎不支持正则表达式

1 个答案:

答案 0 :(得分:0)

position函数不支持正则表达式,所以你应该写一些更复杂的表达式,或者你可以编写自己的函数

CREATE OR REPLACE FUNCTION public.regexp_position(text, text)
 RETURNS integer
 LANGUAGE sql
 IMMUTABLE STRICT
AS $function$
SELECT position((regexp_match($1, $2))[1] IN $1)
$function$

postgres=# select regexp_position('abcdef123','\d');
┌─────────────────┐
│ regexp_position │
╞═════════════════╡
│               7 │
└─────────────────┘
(1 row)

postgres=# select regexp_position('772727a','[^\d]');
┌─────────────────┐
│ regexp_position │
╞═════════════════╡
│               7 │
└─────────────────┘
(1 row)