2013-10-02 56 views
1

我要返回查詢的WHERE可變LIKE「測試%這一」 - 這意味着該查詢返回時變量是「測試這個」和「TestThis」。與空間,沒有空間返回標籤的SQL查詢同時

換句話說,如果有一個空間或沒有查詢返回那裏測試這是背靠背的所有值,不管。

+0

'%'匹配任意數量的字符,甚至是零個字符,請嘗試將其刪除 –

+0

是否要返回僅具有空格的值 – Viji

+0

如果您只搜索一個空格,請使用「_」下劃線而不是% – Viji

回答

2

試試這個:

WHERE Variable RLIKE 'Test ?This' 
0

在SQL服務器試試這個代碼

from msdn : 
_ (underscore) : Any single character. 
Example : WHERE au_fname LIKE '_ean' finds all four-letter first names that end with ean (Dean, Sean, and so on). 

Where columnnam like 'Test_This' 
1

的空間,當它在一個字符串的中間,有沒有特殊的含義,也就是說,你很可能有用任何其他單個字符替換了需求中的空間 - 對於這個問題它沒有任何區別,因爲在單個LIKE謂詞中沒有解決方案,因爲LIKE支持的任何模式都不能匹配Test ThisTestThis

所以,你的選擇是:

  1. GO平臺專用和使用@GOTO 0's RLIKE suggestion爲MySQL和SQL Server的正則表達式支持外部解決方案。

  2. 放棄的單個條件和對陣每個單獨的值的想法。此選項將是平臺無關的,有變化:

    • 使用OR(這是第一次提出,雖然語法錯誤,通過@Szymon,誰刪除被否決後的答案):

      WHERE Variable = 'Test This' OR Variable = 'TestThis' 
      
    • IN使用:

      WHERE Variable IN ('Test This', 'TestThis') 
      
    • 使用UNION ALL

      (由@克里斯建議到@ Szymon的答案被刪除留言熱評):

      ... /* some query */ 
      WHERE Variable = 'Test This' 
      
      UNION ALL 
      
      ... /* same query */ 
      WHERE Variable = 'TestThis' 
      

選擇一個適合你最多(或最少不喜悅你)。