2

我正在从nvarchar我的 SQL Server 数据库中的列 ( ) 填充我的 ASP.NET 下拉列表。

有什么方法可以将包含关键字的行带到返回结果集的开头?

例如,我的表中有这些记录:

abc
abc1
abcd2
abcXYZ3
adfdf3XYZ
abcd5

我想XYZ在我的下拉列表顶部包含行,即:

abcXYZ3
adfdf3XYZ
abc
abc1
abcd2
abcd5

是否可以为此目的创建 SQL 查询,例如:

select * 
from myTable 
order by (mycolumn LIKE '%XYZ%')

我怎样才能得到我想要的结果?如果在 SQL Server 中不可能,我该如何在我的 C# 代码中做到这一点?

4

4 回答 4

8

要在 SQL 中执行此操作,您可以使用

SELECT *
FROM   myTable
ORDER  BY CASE
            WHEN mycolumn LIKE '%XYZ%' THEN 0
            ELSE 1
          END,
          mycolumn 
于 2012-10-19T12:18:44.123 回答
2

您可以按出现次数排序:

SELECT column,
       len(column) - len(replace(column,@text,'')) AS MatchNumber

FROM   table

ORDER BY len(column) - len(replace(column,@text,''))

这具有按匹配发生的次数排序的优点,但偏向于具有更多匹配的更长字符串。

于 2012-10-19T12:22:09.063 回答
1

拆分出来,先添加包含关键字的项目,然后再添加其他项目。

于 2012-10-19T12:20:15.783 回答
0

-- 在 Oracle 11g 上

select myField
  from myTable
order by instr(myField, 'XYZ') desc
于 2012-10-19T12:40:14.737 回答