LIKE以数字结尾的匹配字符串

Nic*_*ick 2 sql postgresql pattern-matching sql-like

我有一个包含资源路径的列,如下所示:

/apiv3/widgets/100
/apiv3/widgets/search
/apiv3/widgets/new
Run Code Online (Sandbox Code Playgroud)

我试图得到一个LIKE或REG_EX,只会匹配以数字结尾的字符串

我尝试了一些例如:

LIKE '\/apiv3\/widgets\/[0-9]%'
LIKE '\/apiv3\/widgets\/[^0-9]%'
Run Code Online (Sandbox Code Playgroud)

如何匹配仅以任意长度的数值结尾的路径?

Erw*_*ter 11

使用正则表达式匹配(~).
对于以数字结尾的字符串:

...
WHERE value ~ '\d$'
Run Code Online (Sandbox Code Playgroud)

\d.."digit"类缩写
$..匹配字符串的结尾

E'\d$'会不正确的.这是不是一个转义字符串.
对于结尾的字符串在最后的数字/:

...
WHERE value ~ '/\d+$'
Run Code Online (Sandbox Code Playgroud)

+..一个或多个原子
/..字面/

快速测试:

SELECT x, x ~ '\d$' As one,  x ~ '/\d+$' As two
FROM  (
    VALUES
     ('/apiv3/widgets/100')
    ,('/apiv3/widgets/search')
    ,('/apiv3/widgets/new')
    ,('/apiv3/widgets/added_test17')
    ) AS t(x);

              x              | one | two
-----------------------------+-----+-----
 /apiv3/widgets/100          | t   | t
 /apiv3/widgets/search       | f   | f
 /apiv3/widgets/new          | f   | f
 /apiv3/widgets/added_test17 | t   | f
Run Code Online (Sandbox Code Playgroud)