Ben*_*min 2 sql database sql-server indexing alphabetical
在数据库中,我有一个字符串字段.我想按字母顺序找到不在数据库中的候选字符串的上一行和下一行.一种解决方案是暂时将此候选项插入到数据库中并在该字段上执行ORDER BY,但这会产生性能问题(在每次选择之前执行插入).你知道其他任何方式来执行此操作吗?
谢谢
以下可能会给你一些指示.
SELECT MAX(StringField)
FROM YourTable
WHERE StringField < Candidate
UNION ALL
SELECT MIN(StringField)
FROM YourTable
WHERE StringField > Candidate
Run Code Online (Sandbox Code Playgroud)
要检索整个记录(并假设您的StringFields是唯一的),您可以将其包装到子查询中.
SELECT *
FROM YourTable yt
INNER JOIN (
SELECT StringField = MAX(StringField)
FROM YourTable
WHERE StringField < Candidate
UNION ALL
SELECT MIN(StringField)
FROM YourTable
WHERE StringField > Candidate
) yts ON yts.StringField = yt.StringField
Run Code Online (Sandbox Code Playgroud)
注意:一个优化可能是在所有大写(或小写)字符上进行比较,因此Andy和ANDY具有相同的权重.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |