2012-04-07 95 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