我有下表
static unsigned char UART_write_shadow;
void UART_transmit_write(unsigned char x) {
*UART_transmit_register_address = x;
UART_write_shadow = x;
}
unsigned char UART_transmit_read(void) {
return UART_write_shadow;
}
我想通过输入名字和姓氏的前几个字符来搜索作者。
Id Author
1 Alexander Mccall Smith
2 Ernest Hemingway
3 Giacomo Leopardi
4 Henry David Thoreau
5 Mary Higgins Clark
6 Rabindranath Tagore
7 Thomas Pynchon
8 Zora Neale Hurston
9 William S. Burroughs
10 Virginia Woolf
11 William tell
将 iam tel l
eg: Search Text: Will tel
Then the search result show the following result
将 iam S. Burrou ghs
例如:搜索文本:将 然后搜索结果显示以下结果
将 iam S. Burroughs 将我告诉
在sql server中实现此目的的有效方法是什么?
答案 0 :(得分:5)
正如您所提到的,可以使用全文搜索来实现。您必须创建FTS目录,然后在表和列上建立索引。您在标题'列'中说明了这一点。但我只在您的示例中看到一个表列,因此我将使用它创建查询。
-- example 1 searching on Will and Tel
SELECT Id, Author
FROM Authors
WHERE CONTAINS(Author, '"Will*" AND "tel*"')
-- example 2 searching on Will and Burrou
SELECT Id, Author
FROM Authors
WHERE CONTAINS(Author, '"will*" AND "Burrou*"')
-- example 3 searching on Will
SELECT Id, Author
FROM Authors
WHERE CONTAINS(Author, '"will*"')
有待进一步参考,请参阅
答案 1 :(得分:0)
随着表格大小的增长,效率低于@ Igor的答案,但您也可以使用Like
语句。
在WHERE子句中使用LIKE运算符来搜索列中的指定模式。
-- example 1 searching on Will and Tel
SELECT Id, Author
FROM Authors
WHERE Author Like('Will%Tel%')
-- example 2 searching on Will and Burrou
SELECT Id, Author
FROM Authors
WHERE Author Like('Will%Burrou%')
-- example 3 searching on Will
SELECT Id, Author
FROM Authors
WHERE Author Like('Will%')
缺点:它比contains语句慢。您需要在要搜索的任何其他关键字后添加%
符号。
优点:在较小(<1000)行表的情况下,可以比包含语句更快。