如何使用 SQL 按在单词开头找到且仅在中间找到的搜索短语进行排序
假设我有一个带有字段 [Name] 的表 [users],并且我在应用程序中编写了一个查询来按名称搜索。
数据库中的名字是:
Lala Ally
My SQL 查询是:
SELECT * FROM users WHERE [Name] LIKE '%al%'
其中“al”是我的搜索词。
我如何按开头(即“%al”)和之后的“%al%”中找到的搜索词对结果进行排序。
结果集应该是
Ally 拉拉
我正在使用 SQL SERVER。
谢谢。
Let's say I have table [users] with the field [Name] and I've written a query in my application to search by name.
The names in the database are:
Lala
Ally
My SQL query is:
SELECT * FROM users WHERE [Name] LIKE '%al%'
where 'al' is my search term.
How would I sort the results by search term found in the beginning i.e. '%al' and only afterwards '%al%'.
The result set should be
Ally
Lala
I'm using SQL SERVER.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个。假设您使用的是 sql server,这将适用于您需要的所有字符串 -
Try this. This will work for all strings as you require assuming you are using sql server-
像这样的事情:
Something like this:
如果您的 DBMS 支持它,我想您可以将您的选择包装在另一个在名称上使用 index_of 的选择中,例如:
If your DBMS supports it, I guess you could wrap your select in another select that uses index_of on the name, such as:
刚刚结束了 SQLite 的这个查询变体做同样的事情,搜索词是“jeff”:
Just ended up with this query variant for SQLite doing same, search term is "jeff":