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

标签 sql postgresql pattern-matching sql-like

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

/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/

相关文章:

mysql - 如何明智地获取数据消息?

sql - 选择唯一的记录并在 rails 中显示为类别标题

python - sqlalchemy:alembic 批量插入失败: 'str' 对象没有属性 '_autoincrement_column'

scala - 是否可以在 scala 的 akka ByteString 上进行模式匹配?

Haskell 做符号和模式匹配吗?

mysql - 从 MySQL 中的 select 中删除

mysql - 将所有相似的文本分组到不同的组中

php - Codeigniter 加载程序超时已过期

postgresql - 使用触发器检索每个 ID 的最后记录

xslt - 默认情况下打印XSLT 1.0文本节点