返回带有空格且没有空格的标记的SQL查询

时间:2013-10-02 23:44:36

标签: mysql sql sql-server

我想返回查询WHERE变量LIKE“Test%This” - 意味着当变量为“Test This”和“TestThis”时查询返回。

换句话说,无论是否有空格,查询都会返回Test This背靠背的所有值。

3 个答案:

答案 0 :(得分:2)

试试这个:

WHERE Variable RLIKE 'Test ?This'

答案 1 :(得分:1)

一个空间,当它在一个字符串的中间时,没有特殊的意义,即你很可能已经用你的任何其他单个字符取代了你的要求中的空间 - 它对问题没有任何影响,在感觉单个LIKE谓词没有解决方案,因为LIKE支持的模式不能匹配Test ThisTestThis

所以,你的选择是:

  1. 特定于平台并使用@GOTO 0's RLIKE suggestion用于MySQL和外部解决方案,以支持SQL Server的RegExp。

  2. 放弃单个条件的概念并单独匹配每个值。此选项与平台无关,并具有变体:

    • 使用OR(@Szymon首先提出这个问题,尽管语法不正确,但在投票结束后删除了答案):

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

      WHERE Variable IN ('Test This', 'TestThis')
      
    • 使用UNION ALL(@Chris Lively在对@ Szymon的删除答案的评论中建议):

      ... /* some query */
      WHERE Variable = 'Test This'
      
      UNION ALL
      
      ... /* same query */
      WHERE Variable = 'TestThis'
      
  3. 选择一个最适合你的(或最不喜欢你)。

答案 2 :(得分:0)

在SQL server中尝试此代码

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'