在这样的简单搜索中:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="/"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
我知道find.where('name LIKE ?', "%#{search}%")
只是字符串插值。 #{search}
符号有什么作用?
答案 0 :(得分:8)
百分号%
是SQL中的wildcard,匹配零个或多个字符。因此,如果search
为"hello"
,则会匹配数据库中的字符串,例如"hello"
,"hello world"
,"well hello world"
等。
请注意,这是SQL的一部分,并不特定于Rails / ActiveRecord。可以使用的查询以及LIKE
的精确行为因SQL方言(MySQL,PostgreSQL等)而异。
答案 1 :(得分:5)
search = 'something'
find.where('name LIKE ?', "%#{search}%")
在您的数据库中,它将被解释为
SELECT <fields> FROM finds WHERE name LIKE '%something%';
答案 2 :(得分:0)
类似查询中的百分号是通配符。所以,你的查询是&#34;任何内容,后跟search
变量中的任何内容,后跟任何内容&#34;。
请注意,百分号的使用是SQL标准的一部分,并不特定于Rails或ActiveRecord。还要注意,这种搜索确实注意到了 - 你的SQL数据库将被强制扫描表中的每一行,试图找到匹配而不是依赖索引。