SQL LIKE通配符空格字符



假设我有一个字符串,其中的单词由1个或多个空格分隔,我想在SQL LIKE条件中使用该字符串。如何生成SQL并告诉它匹配字符串中的一个或多个空格字符?有没有SQL通配符可以用来实现这一点?

让我知道

如果您只想获得至少有一个空白/空白的东西,那么您可以执行以下WHERE myField LIKE '% %'

如果您的方言允许,请使用SIMILAR TO,它允许更灵活的匹配,包括普通正则表达式量词"?"、"*"one_answers"+",分组由"()"表示

where entry SIMILAR TO 'hello +there'

将CCD_ 2与两个单词之间的任意数量的空格相匹配。

我想在MySQL中这是

where entry RLIKE 'hello +there'

我知道这已经很晚了,但我从未找到与LIKE问题相关的解决方案。

SQL LIKE中没有办法做你想做的事。您需要做的是在表达式中使用REGEXP[[:space:]]

所以要在两个单词之间找到一个或多个空格。。

WHERE col REGEXP 'firstword[[:space:]]+secondword'

另一种匹配一个或多个空间的方法是使用[]。它是这样做的。

LIKE '%[ ]%'

这将匹配一个或多个空格。

使用LIKE无法做到这一点,但如果您知道数据中可能存在这种情况,您可以做的是在将数据插入表时,使用正则表达式匹配来提前检测它,并在为此目的创建的另一列中设置标志。

我只是用"%"替换空白字符。比方说,我想对这样的字符串执行LIKE查询"我想用LIKE查询这个字符串"

@search_string = 'I want to query this string with a LIKE'
@search_string = ("%"+@search_string+"%").tr(" ", "%")
@my_query = MyTable.find(:all, :conditions => ['my_column LIKE ?', @search_string])

首先,我用将"%"添加到字符串的开始和结束

("%"+@search_string+"%")

然后用"%"替换其他剩余的空白字符,就像一样

.tr(","%")

http://www.techonthenet.com/sql/like.php

您可以选择的模式有:

%允许您匹配任何长度(包括零长度)的任何字符串

_允许您在单个字符上进行匹配

我认为问题不是要求匹配任何空格,而是要求匹配两个字符串——一个是模式,另一个是由于拼写错误而使用错误的空格数。

在我的情况下,我必须检查来自不同表的两个字段,一个是预加载的,另一个是用户键入的填充字段,所以有时他们不会100%尊重模式。

解决方案是在加入中使用LIKE

   Select table1.field
    from table1
    left join table2 on table1.field like('%' + replace(table2.field,' ','%')+'%')

如果条件:

WHERE myField LIKE '%Hello world%'

不起作用试试

WHERE myField LIKE '%Hello%' 

WHERE myField LIKE '%world%'

这种方法在一些特定的用例中是有用的,希望这会有所帮助。

最新更新