sql - 如何按字母顺序对 SQL 查询进行排序但忽略前导数字?

标签 sql database vb.net sorting

我无法为我的问题找到正确的查询。我在数据库中有一个表,我需要以非常具体的方式对其进行排序 - 我正在排序的列是一个地址,它以数字开头,但我需要忽略数字对其进行排序。

这是我的数据集:

id  | address
1   | 23 Bridge road
2   | 14 Kennington street
3   | 7  Bridge road
4   | 12 Oxford street
5   | 9  Bridge road

我需要这样排序:

id | address
1  |  7 Bridge road
2  |  9 Bridge road 
3  | 23 Bridge road
4  | 14 Kennington street
5  | 12 Oxford street

到目前为止我只得到了这个:

SELECT id, address
FROM propertySearch
Order by address ASC. 

谁能帮我解决这个问题?

最佳答案

如果这将始终是那种格式(前导数字,一个空格,然后是地址),那么你可以这样做:

SQL 服务器:

SELECT * FROM YourTable t
ORDER BY SUBSTRING(t.address,CHARINDEX(' ',t.address,1),99)

MySQL:

SELECT * FROM YourTable t
ORDER BY SUBSTRING_INDEX(t.address,' ',-1) 

如果格式不固定,可以使用 SQL-Server patindex() :

SELECT * FROM YourTable t
ORDER BY SUBSTRING(t.address,PATINDEX('%[A-z]%',t.address),99)

注意:这是糟糕的数据库设计!!每个值都应正确存储在其自己的列中,例如 STREETCITYAPARTMANT_NUMBER 等,因为如果不这样做,它们就会导致这个.

关于sql - 如何按字母顺序对 SQL 查询进行排序但忽略前导数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38849360/

相关文章:

java - Hibernate 将日期格式转换为问号

c# - 将 onclientclick 添加到 gridview 寻呼机

mysql - vb.net 按 X 轴日期排序图表

mysql - 如何在 MySQL 中查看表分区大小(甚至可能吗?)

.net - Array.Sort 是如何在 .NET 中实现的?

sql - 为什么这个查询不返回任何结果

mysql - SQL按乘值选择和过滤

sql - where false 是什么意思?在 SQL 查询中

ios - 应用程序卡住直到将数据保存到核心数据中

xml - 对于来自网络的大型 XML 消息,我应该使用哪种 postgres 数据类型?