假设我有一个字符串,其中单词由1个或多个空格分隔,我想在SQL LIKE条件中使用该字符串。如何创建SQL并告诉它匹配我的字符串中的一个或多个空格字符?是否有我可以使用的SQL通配符?
让我知道
答案 0 :(得分:5)
如果您只想获得至少有一个空格/空白区域的内容,那么您可以执行以下WHERE myField LIKE '% %'
答案 1 :(得分:4)
如果您的方言允许,请使用SIMILAR TO,它允许更灵活的匹配,包括正常的正则表达式量词“?”,“*”和“+”,分组由'()'
表示where entry SIMILAR TO 'hello +there'
将'hello there'
与两个单词之间的任意数量的空格匹配。
我想在MySQL中这是
where entry RLIKE 'hello +there'
答案 2 :(得分:3)
我知道这已经很晚了,但我从来没有找到与LIKE
问题相关的解决方案。
无法在SQL LIKE
内完成您想要的操作。您需要做的是在表达式中使用REGEXP
和[[:space:]]
。
所以在两个单词之间找到一个或多个空格..
WHERE col REGEXP 'firstword[[:space:]]+secondword'
答案 3 :(得分:2)
你不能使用LIKE这样做,但你可以做的,如果你知道你的数据中可能存在这种情况,就像你将数据插入表中一样,使用正则表达式匹配来预先检测它在为此目的创建的不同列中设置标志。
答案 4 :(得分:2)
匹配一个或多个空间的另一种方法是使用[]
。
它是这样完成的。
LIKE '%[ ]%'
这将匹配一个或多个空格。
答案 5 :(得分:2)
我只是用'%'替换空白字符。假设我想对类似的字符串执行 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(“”,“%”)
答案 6 :(得分:1)
http://www.techonthenet.com/sql/like.php
您可以选择的模式是:
%允许您匹配任何长度的任何字符串(包括零长度)
_允许您匹配单个字符
答案 7 :(得分:1)
我认为问题不是要匹配任何空格,而是要匹配两个字符串,其中一个是模式,另一个是由于错别字而具有错误的空格数。
在我的情况下,我必须检查来自不同表的两个字段,一个字段是预加载的,另一个字段是由用户键入的,因此有时他们不遵守100%的模式。
解决方案是在联接中使用LIKE
Select table1.field
from table1
left join table2 on table1.field like('%' + replace(table2.field,' ','%')+'%')
答案 8 :(得分:-1)
如果条件:
WHERE myField LIKE '%Hello world%'
不起作用尝试
WHERE myField LIKE '%Hello%'
和
WHERE myField LIKE '%world%'
这种方法在一些特定的用例中很有用,希望对您有所帮助。