Mysql 类SQL通配符空格字符

Mysql 类SQL通配符空格字符,mysql,sql,Mysql,Sql,假设我有一个字符串,其中的单词由1个或多个空格分隔,我想在和SQL类似的条件下使用该字符串。如何生成SQL并告诉它匹配字符串中的一个或多个空格字符?是否有一个SQL通配符可用于执行此操作 让我知道 您可以选择的模式有: %允许您匹配任何长度的任何字符串(包括零长度) _允许您在单个字符上进行匹配 如果您只是想用至少一个空格/空白来获取任何内容,那么您可以执行如下操作其中myField(如“%”您不能使用like来执行此操作,但如果您知道数据中可能存在此情况,则可以在将数据插入表时执行此操作,使用

假设我有一个字符串,其中的单词由1个或多个空格分隔,我想在和SQL类似的条件下使用该字符串。如何生成SQL并告诉它匹配字符串中的一个或多个空格字符?是否有一个SQL通配符可用于执行此操作

让我知道

您可以选择的模式有:

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

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


如果您只是想用至少一个空格/空白来获取任何内容,那么您可以执行如下操作
其中myField(如“%”
您不能使用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(“,%”)


如果您的方言允许,请使用类似于,这允许更灵活的匹配,包括正常正则表达式量词“?”、“*”和“+”,分组由“()”表示

'hello there'
与两个单词之间任意数量的空格匹配

我猜在MySQL中这是

where entry RLIKE 'hello +there'

我知道这已经很晚了,但我从来没有找到一个与
类似的
问题相关的解决方案

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

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

WHERE col REGEXP 'firstword[[:space:]]+secondword'
如果出现以下情况:

WHERE myField LIKE '%Hello world%'
没用,试试看

WHERE myField LIKE '%Hello%' 


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

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

在我的例子中,我必须检查来自不同表的两个字段,一个是预加载的,另一个是由用户输入的,所以有时候他们不完全遵守模式

解决方案是在联接中使用LIKE

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

嗯,我不知道是否有解决方案,但无论如何,在sql查询中使用like或通配符是一种不好的做法,因为它可能非常慢。更喜欢使用像Lucene这样的索引引擎来执行这样的查询请发布您的表结构和到目前为止尝试过的查询。
像“%”
将匹配包含1个或多个空格的任何字符串。。。但是你想对那场比赛做什么?把唱片还给我?将其转换为单个空格?这是否回答了您的问题?就我所能做到的而言,它只与1个空格完全匹配,与
'%%'
的匹配方式相同。i、 e.
“Hello[]World”
与Hello和World之间有两个空格的地方不匹配。mysql有一个很好的空格。
WHERE myField LIKE '%world%'
   Select table1.field
    from table1
    left join table2 on table1.field like('%' + replace(table2.field,' ','%')+'%')