我正在从我的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#代码呢?
答案 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