gpt4 book ai didi

PHP 修剪和带有 LIKE 和排序的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 14:31:01 25 4
gpt4 key购买 nike

我热衷于网络,因此您看到的数据是交换机/端口信息。

问题:

我只想要 SQL 查询的“ge-0/0/x”部分,并且希望它按“ge-0/0/x”排序,并且我只想“选择不同的”“ge-” 0/0/x"部分(只有 1 个端口,如果你关注我的话)。

由于某些结果上有一些点,我发现可以使用 rtrim 来消除它们。结果中也有一些破折号(-),因此非常感谢您提供消除它们的帮助。

PHP:

// "nodes" is the number of swithes, thus the ge-[node].
$host_name = 'switch_host_name';
$nodes = 2;
for($node=0;$node<$nodes;$node++){
$ge = '%: ge-'.$node.'%';
$portquery = mysql_query("SELECT service_description FROM service WHERE host_name='$host_name' AND service_description LIKE '$ge'") or die(mysql_error());
while($portarray = mysql_fetch_array($portquery)){
$port = substr($portarray['service_description'],8,10);
echo '<div id="'.$port.'_'.$host_name.'">'.$port.'</div>';
}
echo '<br />';
}

SQL 示例:

+-------------------+----------------------------------+
| host_name | service_description |
+-------------------+----------------------------------+
| switch_host_name | IF 151: ge-0/0/28.0 - Status |
| switch_host_name | IF 153: ge-0/0/29 - Status |
| switch_host_name | IF 155: ge-0/0/3 - Description |
| switch_host_name | IF 155: ge-0/0/3 - Status |
| switch_host_name | IF 155: ge-0/0/3.0 - Traffic |
| switch_host_name | IF 195: ge-0/0/5 - Description |
| switch_host_name | IF 195: ge-0/0/5 - Status |
| switch_host_name | IF 195: ge-0/0/5.0 - Traffic |
+-------------------+----------------------------------+

非常感谢您能向我指出的任何线索、链接、指南。当然有一个解决方案就太好了!

提前致谢。

最佳答案

如果您有很多这样的记录,我建议您在将记录插入数据库时​​对字符串进行处理,将相关部分提取到专用的数据库字段中。虽然我知道这是设备配置数据,但正如您所发现的,将格式化数据存储在字段中会否定拥有关系数据库的目的。进行排序/过滤变得非常困难。

话虽这么说,您可能可以在查询中执行一些基本的字符串操作来提取 ge 数据:

SELECT
@start := LOCATE('ge-', service_description),
@end := LOCATE(' - ', service_description),
SUBSTR(service_description, @start, @end - @start) AS ge
FROM ...
GROUP BY ge
ORDER BY ge

假设该字段中的每条记录只有一个 ge- 和一个 - 字符串。

关于PHP 修剪和带有 LIKE 和排序的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051570/

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