如何从SQL Server数据库中获取以给定字符串开头的条目?

我有一个数据库,在标签系统中使用了很多单词。 我已经为自动完成框创建了必要的代码,但我不确定如何以最有效的方式从数据库中获取匹配的条目。

我知道LIKE命令,但在我看来它更像是一个EQUAL命令。 我只得到与我输入的单词完全相同的单词。

我的计划是读取每一行,然后使用C#的string.StartsWith()和string.Contains()函数来查找可能适合的单词,但我认为对于大型数据库,读取每一行可能效率低下然后过滤它们。

有没有办法只读取以SQL Server开头或包含给定字符串的行?

使用like时,您提供%符号作为通配符。 如果你想要以Hello开头的字符串,你可以使用LIKE’Hello%’如果你想在字符串中的任何地方使用Hello,你可以使用LIKE’%Hello%’

至于效率,使用Like并不是最佳的。 您应该查看全文搜索。

我知道LIKE命令,但在我看来它更像是一个EQUAL命令。 我只得到与我输入的单词完全相同的单词。

那是因为你没有使用通配符:

WHERE column LIKE 'abc%' 

…将返回column值以“abc”开头的行。 我将指出,在使用通配符时,这是唯一可以在column …列上使用索引的版本。

 WHERE column LIKE '%abc%' 

…将返回column值包含“abc”的行。 通配LIKE的左侧可确保无法使用索引。

SQL Server本身不支持正则表达式 – 您必须使用CLR函数来访问该function。 但它的表现与LIKE相当。

全文搜索(FTS)是搜索文本的最佳方式。

您可以在T-SQL中使用CONTAINS ,但我非常确定您必须对查询中涉及的表使用全文索引。

包含

全文搜索入门

您还可以使用以下语句实现StartWithfunction:

 LEFT('String in wich you search', X) = 'abc' CHARINDEX('abc', 'String in wich you search') = 1 'String in wich you search' LIKE 'abc%' 

使用最好的一个。