我有一个包含资源路径的列,如下所示:
/apiv3/widgets/100
/apiv3/widgets/search
/apiv3/widgets/new
我正在尝试获取这样的 LIKE 或 REG_EX,它只会匹配以数字结尾的字符串
我尝试了一些方法,例如:
LIKE '\/apiv3\/widgets\/[0-9]%'
LIKE '\/apiv3\/widgets\/[^0-9]%'
如何匹配仅以任意长度的数值结尾的路径?
最佳答案
将正则表达式与~
运算符结合使用。
对于以数字结尾的字符串:
... WHERE value ~ '\d$'
\d
... shorthand class for digits
$
...匹配end of a string
E'\d$'
是不正确的。这不是 escape string .
对于在最后一个 /
之后以仅 位数字结尾的字符串:
... WHERE value ~ '/\d+$'
+
... 一个或多个原子
/
... 文字 '/'
快速测试:
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
关于sql - LIKE 匹配以数字结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332164/