Php 数字小于10的正则表达式

Php 数字小于10的正则表达式,php,mysql,regex,Php,Mysql,Regex,我有一个表,表中有一列,数据以这种方式存储: 1:29,3:20,5:0,4:0,2:76 我想用PHP(或一般的MySQL)发出一个查询请求,并获取在“:”之后数字小于10的行 因此,在本例中,我有(29,20,0,0,76),因为我的数字小于10,所以我想取这一行。一般来说,存储逗号分隔的值在SQL中被认为不是一个好的设计,因为它会导致违反数据规范化规则,此外还面临许多其他问题。但既然你已经这么做了,想要一个正则表达式解决你的问题,你可以使用这个正则表达式 :[0-9](,|$) 在m

我有一个表,表中有一列,数据以这种方式存储:

1:29,3:20,5:0,4:0,2:76
我想用PHP(或一般的MySQL)发出一个查询请求,并获取在
“:”
之后数字小于10的行


因此,在本例中,我有
(29,20,0,0,76)
,因为我的数字小于10,所以我想取这一行。

一般来说,存储逗号分隔的值在SQL中被认为不是一个好的设计,因为它会导致违反数据规范化规则,此外还面临许多其他问题。但既然你已经这么做了,想要一个正则表达式解决你的问题,你可以使用这个正则表达式

:[0-9](,|$)

在mysql中,您可以编写这样的查询

select * from tablename where columnname regexp ':[0-9](,|$)';

这将为您提供至少有一个逗号分隔的值小于10的冒号后面的行。

当您需要检查序列化中的单个值时,不要存储序列化值。将它们分解到它们自己的表中,并正常地查询它们。这样的模式显然违反了。如果可能的话,尝试将其重新构造为一对多关系结构,因为这将使您的查询变得几乎微不足道。我使用的是opencart系统,这是一个模块,因此我无法重新设计它。谢谢!好吧,那样的话,你就无能为力了。希望我的正则表达式对你有用。如果你遇到任何问题,请告诉我。这很有效。但我刚刚意识到,我需要一种方法来对结果进行排序。我的意思是,当我得到该行时,我想根据这个正则表达式(5:[0-200](,|$)->5将是一个从下拉菜单中选择的数字,可以按列的值排序,但不认为可以按正则表达式的值排序。在您的例子中,由于列存储逗号分隔的值,因此排序将变得更加困难,正如您所希望的那样。实际上,我尝试使用:[0-200](,|$)但对于您在这里与我玩游戏的示例,它不起作用