0

我想返回查询 WHERE Variable LIKE “Test%This” - 表示当变量为“Test This”和“TestThis”时查询返回。

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

4

3 回答 3

2

尝试这个:

WHERE Variable RLIKE 'Test ?This'
于 2013-10-03T00:01:26.430 回答
1

一个空格,当它位于字符串的中间时,没有特殊含义,也就是说,您可以很好地用任何其他单个字符替换您的要求中的空格 - 这对问题没有任何影响,从某种意义上说就单个 LIKE 谓词而言,它没有解决方案,因为 LIKE 支持的任何模式都不能同时匹配Test ThisTestThis

因此,您的选择是:

  1. 转到特定于平台并使用@GOTO 0对 MySQL 的 RLIKE 建议和对 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'
      

选择一个最适合你(或最不让你不快)的。

于 2013-10-03T08:52:38.750 回答
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'
于 2013-10-03T00:19:50.730 回答