2011-08-09 24 views
1

我有一個電話簿數據庫這樣的記錄:MySQL的:如何建立可查詢的匹配模式

  company_name | company_number | company_priority 

每當有電話打進來,在Asterisk的系統模塊違背了號碼查詢檢測優先級是什麼。

select company_priority from clients where company_number like '%NUMBER%'; 

並根據優先級將呼叫路由到不同的路由。

我現在要做的是如果有任何特殊字符可以放入記錄(是的,而不是在查詢中)。 ?像1800 * *

或者,我們可以執行兩個不同的查詢,如 「SELECT * FROM XX || SELECT * FROM XX」;

我無法更改變量或查詢,因爲它是內置到模塊中的。我唯一的選擇是撕開模塊並在那裏做一些改變。

+0

不確定您在這裏要求什麼。您是否認爲以「1800」開頭的任何號碼都應該獲得優先級值,並超越公司的優先級? –

+1

你能給出一個你想要發生什麼的積極和消極的例子嗎?你是說如果我從1-804-555-1212撥打電話,你想找到1804555 *的模糊匹配嗎?或類似的東西? –

+0

是@trickynixon和喬。我想要一個像1800 *的記錄,我可以運行一個查詢來挑選任何1800xxxxxxxxx調用。 – roymustang86

回答

2

你可以,它的工作原理!我也很驚訝!例如:

create table tmp (a varchar(20)); 

insert into tmp values ('%ahoj%'), ('nazdar%'); 

select * from tmp where 'nazdar ahoj' like a; 

+---------+ 
| a  | 
+---------+ 
| %ahoj% | 
| nazdar% | 
+---------+ 

因此,您可以填寫例如在company_number列中輸入1080%以標識以1080開頭的所有數字。然後使用此查詢測試特定的NUMBER:

select company_priority from clients where 'NUMBER' like company_number; 
+0

真棒,我從來沒有想過以另一種方式嘗試它。 – roymustang86

+0

我既不!只是你的問題啓發了我! :-) 謝謝!!! ;-))) – TMS