SQL Server按列包含字符串的查询顺序

时间:2012-10-19 12:16:51

标签: asp.net sql-server drop-down-menu

我正在从我的SQL Server数据库中的列(nvarchar)填充我的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 个答案:

答案 0 :(得分:8)

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

SELECT *
FROM   myTable
ORDER  BY CASE
            WHEN mycolumn LIKE '%XYZ%' THEN 0
            ELSE 1
          END,
          mycolumn 

答案 1 :(得分:2)

您可以按出现次数排序:

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

FROM   table

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

- 关于Oracle 11g

select myField
  from myTable
order by instr(myField, 'XYZ') desc