2012-02-12 74 views
0

我想使用LIKE在一列(varchar列)中找到一個數字,我正在使用像這樣的語句SELECT * FROM MYTABLE WHERE mynumberslist LIKE '%76%'。數據存儲如下:nums =; 76; 78; 80; 81; 176;那麼,我該如何去搜索76,因爲如果我只是做LIKE %76%我會得到76和176返回有沒有反正呢?我沒有設計數據庫,也沒有控制存儲的數據,我只負責編寫一個程序來獲取數據。使用MySQL喜歡用符號搜索一個數字

回答

0

使用正則表達式匹配:

SELECT * 
FROM MYTABLE 
WHERE mynumberslist RLIKE '\b76\b' 

這將匹配即使你沒有在最後一個尾隨;做 - 它匹配 76(\b意味着正則表達式「單詞邊界」)

+0

如果不能保證前導分號和尾隨分號,也可以使用CONCAT來添加它們,以避免使用正則表達式 – zerkms 2012-02-12 19:54:06

2

這是因爲剛剛

LIKE '%;76;%' 

PS一樣簡單:發送hello到數據庫模式的作者並捐贈了他一些錢購買任何DB-設計相關的書

+0

+1我不得不承認...你的答案是比我好:) [KISS原則(http://en.wikipedia.org/wiki/Keep_it_simple_stupid ) – Bohemian 2012-02-12 19:49:09

+0

我試過了,但我從未得到任何結果,當我在select語句中使用分號時 – atrljoe 2012-02-12 19:51:03

+0

@atrljoe:如果您給了我們正確的數據樣本'nums =; 76; 78; 80; 81; 176;' - 那麼它應該工作。如果沒有 - 那麼你需要用**實際**數據來糾正這個問題,這樣我們才能修復答案。 – zerkms 2012-02-12 19:52:43

0
SELECT * 
    FROM MYTABLE 
WHERE ';' + mynumberslist + ';' LIKE '%;76;%';