在SQL中查询分隔Varchar字段的有效方法

时间:2009-07-15 15:42:17

标签: sql

我有一个SQL Server 2005表,它有一个varchar(250)字段,其中包含我将用于搜索目的的关键字。我无法改变设计。数据看起来像这样......

  

个人,财产,成本,背书

针对这些关键字运行搜索查询的最有效方法是什么?我唯一能想到的是......

WHERE Keywords LIKE '%endorse%'

3 个答案:

答案 0 :(得分:4)

由于规范化不是一种选择,因此下一个最佳选择是配置和使用全文搜索。这将保留一个内部搜索索引,使您可以轻松搜索数据。

像LIKE'%pattern%'这样的解决方案的问题是,这将产生一个全表扫描(或者可能是一个完整的索引扫描),它可能会对表中的大量数据产生锁定,这会减慢任何触及相关表格的操作。

答案 1 :(得分:1)

最有效的方法是规范化数据库设计。永远不会将CSV值存储到单个单元格中。 除了使用之外你可以考虑全文搜索。

答案 2 :(得分:0)

您可以使用PATINDEX()

USE AdventureWorks;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

http://msdn.microsoft.com/en-us/library/ms188395%28SQL.90%29.aspx