将一列拆分为单独的单词,然后过滤结果



我有一列,我想把它分解成单独的单词,在文本框上进行"自动建议"。多亏了这篇文章,我才得以做到这一点:http://discourse.bigdinosaur.org/t/sql-and-database-splitting-a-column-into-individual-words/709/45

然而,结果中有我不想要的字符,比如"/'等。我有一个数据库函数,当我想过滤掉字符时,我会使用它,但我不知道如何合并2并使其工作。

Here's the splitting code:
;WITH for_tally (spc_loc) AS
    (SELECT 1 AS spc_loc
    UNION ALL
    SELECT spc_loc + 1 from for_tally WHERE spc_loc < 65
) 
SELECT spc_loc into #tally from for_tally OPTION(MAXRECURSION 65)
select substring(name, spc_loc, charindex(' ', name + ' ', spc_loc) - spc_loc) as word
  into #temptable
  from #tally, products
 where spc_loc <= convert(int, len(name))
   and substring(' ' + name, spc_loc, 1) = ' '

然后,以下是我如何查看表格:

select distinct word from #temptable order by word

下面是我如何在其他查询中调用数据库函数:

SELECT * INTO #Keywords FROM dbo.SplitStringPattern(@Keywords, '[abcdefghijklmnopqrstuvwxyz0123456789-]')

其中@Keywords是要筛选的字符串。

我已经尝试了所有我能想到的,通过dbo过滤第一个查询。SplitStringPattern函数

即:

select substring(dbo.SplitStringPattern(name, '[abcdefghijklmnopqrstuvwxyz0123456789-]'), spc_loc, charindex(' ', name + ' ', spc_loc) - spc_loc) as word
  into #temptable
  from #tally, products
 where spc_loc <= convert(int, len(name))
   and substring(' ' + name, spc_loc, 1) = ' '

但我得到"既找不到列"dbo",也找不到用户定义的函数或聚合"dbo。SplitStringPattern",或者名称不明确。"

我需要对此进行优化,因为此查询需要非常快速地返回结果。

或者,如果有更好的方法,我愿意接受建议。

在调用"数据库函数"之前,创建一个T-SQL函数来过滤掉不需要的字符。以下网页链接应该会有所帮助。

  • MSDN创建函数(Transact-SQL)
  • 如何在MS SQL Server(T-SQL)中删除字符串中的特殊字符

相关内容

  • 没有找到相关文章

最新更新