2012-04-07 96 views
0

我进入网络,因此您看到的数据是交换机/端口信息。使用LIKE和排序的PHP修整和SQL查询

问题:

我只希望 “GE-0/0/X” 的SQL查询的一部分,我希望它是 “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  | 
+-------------------+----------------------------------+ 

任何线索,链接,导游,TUTS,你可以点我是非常赞赏。 当然,一个解决方案将是伟大的!

在此先感谢。

回答

1

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

话虽这么说,你也许可以做一些基本的字符串操作在查询中提取您的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-和一个-串领域。

+0

谢谢,它真的很好!只有一件事,结果是仅仅通过ge-0/0/x中的第一个数字x来排序。例如:ge-0/0/1到ge-0/0/19出现在ge-0/0/2之前。任何解决方案? – fierflash 2012-04-07 06:04:18

+0

不是真的,除非你进一步拆分组件。它由于'/'字符而被排序为一个字符串。因此,我建议将各个位按摩到自己专用的适合类型的字段中。 – 2012-04-07 17:14:41