从选择中获取字符串的某些部分

时间:2014-02-13 10:50:56

标签: php mysql sql replace

我有一个数据库(mydb),其中包含以下数据:

PK:

  • 8/10/6101 + 6102(2971386)
  • 6110/2411(3037457)
  • 8/10/6504(2276770)
  • 8/10/6403(2724296)
  • -2669938
  • 8/1 / 1001-1031(2857109)
  • -2547251
  • 8/9 / 5003-5006(2770096)

我必须将这些数据与变量$id进行比较,例如:2724296

SELECT * FROM mydb WHERE PK = '$id';

当然,此查询不会传递结果。有没有一种简单的方法来比较我的$ id与大括号中的值和没有大括号的值?选择中的替换替换为例如只有支撑,但不是支撑的值。

Greets,Yab86

3 个答案:

答案 0 :(得分:1)

您可以使用REGEXP。试试这个查询,

$query = "SELECT * FROM mydb WHERE PK REGEXP '({$id})' OR PK REGEXP '-{$id}'";

答案 1 :(得分:1)

您可以在下面使用:

  

SELECT * FROM mydb WHERE PK LIKE'%(2724296)';

下面有点复杂:使用正则表达式

  

SELECT * FROM mydb WHERE PK REGEXP'[(] 2724296 [)]';

请参阅此https://dev.mysql.com/doc/refman/5.1/en/regexp.html以编写可自定义的正则表达式。

答案 2 :(得分:0)

我会尝试正则表达式(假设您只想检查括号内的数字)。这样的事情应该有效:

\([0-9]*\)$

这将返回一个以(后跟一个或多个数字并以其结尾)开头的字符串。然后,您应该能够从字符串中删除括号并将其与变量

进行比较