2016-02-12 77 views
0

是的,我知道这是一件可怕的事情要问和全文索引将解决我的所有问题,但它的运行上是不允许一个完整的Azure的V11 DB文本索引和升级目前不是一种选择。SQL等,其中字符串可以以随机的顺序

我试图做到的,是被送入一个搜索字符串,这对随后一个字符串列作为像匹配。但是,传入的字符串可能以错误的顺序出现。

举个例子

SELECT value 
FROM table 
WHERE value like '%This% %Is% %A% %String%' 

工作得很好,因为搜索字符串是为了,但什么我有时传递是 '%此%%字符串%%是%%A%'

造成;

导致;

SELECT value 
FROM table 
WHERE value like '%This% %String% %Is% %A%' 

这将无法返回任何东西。当字符串可以以任何顺序出现时,是否可以应用一个类似的字符串?

我发现其他SO帖子只是归结为使用全文索引,因此机会是我要么做了一些愚蠢(超出尝试这种没有全文索引),或者这是不可能的。

如果任何人都可以提供一些帮助,我会很感激。

快速编辑,因为我不认为我有详尽的解释自己;

,因为en例子中,我对匹配的数据(仍在使用“%此%%字符串%%是%%A%”作为一个例子搜索参数)将是这样的;

  • “这是一个字符串我想回到”
  • “这是一个十进制”
  • “这个整数是”
  • “这是一个十进制”
  • “这是串'

在这些示例中,我只想返回第一条记录'这是我要返回的字符串',因此它与以下答案类似,只不过它需要使用AND和该输入的长度会有所不同。例如,输入可以是

  • '%此%%字符串%%是%%A%'
  • '%这%%是%% A%%字符串%'
  • “%此% %字符串%”(这将返回两个记录)
  • '%此%%字符串%%A%'

感谢,

尼尔

回答

0

您查询不会去非常快,但你可以将其改写为:

0
WHERE value like '%This% ' 
    AND value like ' %String% ' 
    AND value like ' %Is% ' 
... 

但你有种需要这样做

(value like '%This% ' OR value like ' %This%') 

为了应对是第一个或最后一个

你真的应该只是把单词解析成单独的表格
不仅仅是更快但更准确
这是任何带有A的词 - 例如%A%