如何从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%'
使用最好的一个。