sql - 获取Sql Server中以某个字母开头的按字母顺序排列的记录

标签 sql sql-server regex sql-order-by

在 SQLSERVER/MSSQL 中,问题如下:

SELECT * from [Translation Color] order by [Language Code] 

我希望记录按字母顺序排序,以“I”字母开头。

结果示例:

“艾奥伦” '流门' '酸' '阿尔芬' “冷干”

我不想使用 union 或更多 sql 语句..只需尝试使用 order by 特殊子句来捕获它。

我尝试过:

ORDER BY <field> REGEXP '^I' DESC

但是没有成功。

有什么想法吗?

最佳答案

这应该可以做到:

ORDER BY CASE WHEN SUBSTRING([Translation Color],1,1) = 'l' 
     THEN 1 ELSE 0 END DESC

编辑:

从 i 开始完全排序,然后循环回到 h 的完整答案是:

ORDER BY CASE WHEN ASCII(UPPER(SUBSTRING([Translation Color],1,1))) < 73 
         THEN ASCII(UPPER(SUBSTRING([Translation Color],1,1))) + 26
         ELSE ASCII(UPPER(SUBSTRING([Translation Color],1,1))) END ASC,       
         [Translation Color] ASC

请注意,这会影响大型表的性能。

关于sql - 获取Sql Server中以某个字母开头的按字母顺序排列的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/708967/

相关文章:

javascript - 如何使用 javascript 或 jquery 计算文本框中逗号的数量?

Java 正则表达式示例

c# - 如何验证不同格式的日期

sql - 如何判断索引是否包含 varchar(max) 类型的列?

sql - 查找唯一的天数

java - 在java中获取无效游标状态异常

sql-server - Oracle到SQL Server存储过程和函数转换器

sql - 使用大量 if-else 语句和 JSONification 简化 PL/pgSQL 函数

sql-server - 如何在sql server中创建一个带有结果集的表

sql-server - 限制 SQL Server 中的 NVARCHAR 大小?