gpt4 book ai didi

php - LIKE 查询中的数字通配符?

转载 作者:可可西里 更新时间:2023-11-01 07:58:49 24 4
gpt4 key购买 nike

我有一张表格,上面有很多名字,后面跟着一个数字。所有条目都使用相同的语法,但有些名称的数字从 1 到 99

例子:

john 1
john 2
john 3
john smith 1
john smith 2

在此示例中,我尝试选择所有“john”条目

SELECT * FROM my_table WHERE name LIKE 'john %'

问题是它还会从“john smith”中选择条目。我怎样才能避免这种情况?是否可以使用某种通配符来做类似的事情:

SELECT * FROM my_table WHERE name LIKE 'john [0-9]'

最佳答案

使用 REGEXP看起来最简单的查询是:

select * from tablename where name REGEXP '^john smith [[:digit:]]{1,2}$';

这会将表达式限制为最多 2 位数字,从而有效地将其限制为 0-99。

或者

select * from tablename where name REGEXP '^john smith [[:digit:]]+$';

不会将其限制为 0-99,但允许空格后的任意数字组合。

请注意,如果您不在开头包含 ^,则允许使用诸如“x john smith 2”之类的内容。如果您不在末尾包含 $,则允许使用“john smith 2 x”。

要捕获 john 和 john smith 需要更像这样的东西:

select * from tablename where name REGEXP '^john [[:alpha:]]{0,}[[:space:]]{0,1}[[:digit:]]{1,2}$' ;

{n,n} 是元素重复的最小和最大次数。因此,对于“john”,我们不会有这个 alpha 元素,但对于“john smith”,我们会有一组字母,因此 {0,} 表示最少 0 个字母字符,没有最大值。空间也是如此,因为使用“john”我们不会有这个空间。但可能我们想将此处可以出现的空格数限制为 1,因此包含最大部分 {0,1}

关于php - LIKE 查询中的数字通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com