如何使用像#"爆炸"的PHP方法在sql中

时间:2017-08-01 18:37:44

标签: php sql

我正在尝试获取一些数据,在表中,有一个名为" sysload"的字段。但是,它是var(字符串)类型。其中的数据类似于" 0.0,0.2,0.5和#34;三个数字用逗号分隔。但是,在sql中,我只需要最后一个数字(在这个例子中:0.5)来比较"其中"。那我怎么用呢?我的代码:

$termquery=mysql_query("SELECT a.terminal FROM terminal_server_log a
inner join
        (
            SELECT  terminal, MAX(timestamp) timestamp
            FROM    terminal_server_log
            group by terminal
        ) b on (b.terminal=a.terminal and a.timestamp=b.timestamp)
WHERE explode(',', sysload)[2]>$number");

最后一行是最重要的一行,我想与' $ number'进行比较,但似乎我无法使用' explode'。感谢

2 个答案:

答案 0 :(得分:0)

PHP函数在SQL查询中不起作用。

您可以从查询中删除此过滤器并在php端过滤,或者您可以使用某些mysql字符串函数创建自定义爆炸函数。

在这个链接中有一个例子:(我没有检查它是否正常工作) Equivalent of explode() to work with strings in MySQL

答案 1 :(得分:0)

您可以使用正则表达式来匹配sysload列的最后一个元素:https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-instr

另请参阅CAST()函数,因为提取的子字符串应转换为数字值,以便与数字进行比较。