如何从mysql表中选择包含至少一个大于搜索值的值的所有行?

时间:2017-10-01 16:44:27

标签: php mysql mysqli

e.g。我想从下表中选择所有,其中数据包含大于或等于5的值。即第11,13,14和16行。

╔════╦═══════════════════╗
║ ID ║ Data              ║
╠════╬═══════════════════╣
║ 10 ║ 2 or 3            ║
║ 11 ║ 5 and 6           ║
║ 12 ║ 3 or 4            ║
║ 13 ║ 5 or 6(Optional)  ║
║ 14 ║ 5                 ║
║ 15 ║ 1 or 2            ║
║ 16 ║ 6 (Optional) or 3 ║
╚════╩═══════════════════╝

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

CREATE FUNCTION explode(str VARCHAR(255), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
       LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
       delim, '');


SELECT ID,REPLACE(Data,'(Optional)','') AS data FROM `Temp` WHERE data >= 5 OR TRIM(explode(explode(data,'and',1),'or',1)) >= 5 OR TRIM(explode(explode(data,'and',1),'or',2) ) >=5 OR TRIM(explode(explode(data,'and',2),'or',1) ) >=5 OR TRIM(explode(explode(data,'and',2),'or',2) ) >=5