控制SQL Server Order by子句中指定排序的字符
所以我有这个代码:控制SQL Server Order by子句中指定排序的字符,sql,sql-server,sorting,sql-order-by,Sql,Sql Server,Sorting,Sql Order By,所以我有这个代码: select * from Names where organization like 'Bank of America%' order by organization 我有这样的值,理想情况下可以这样排序: 美国银行 美国银行,阿拉巴马州 美国银行 美国银行 美国南卡罗来纳州银行 但是当我运行代码时,它的排序如下,表示空格在逗号之前: 美国银行 美国银行 美国南卡罗来纳州银行 美国银行,阿拉巴马州 美国银行 我如何才能得到这个正则表达式:[^a-z a-Z0-9],它将删
select *
from Names
where organization like 'Bank of America%'
order by organization
我有这样的值,理想情况下可以这样排序:
美国银行
美国银行,阿拉巴马州
美国银行
美国银行
美国南卡罗来纳州银行
但是当我运行代码时,它的排序如下,表示空格在逗号之前:
美国银行
美国银行
美国南卡罗来纳州银行
美国银行,阿拉巴马州
美国银行
我如何才能得到这个正则表达式:[^a-z a-Z0-9],它将删除order by子句中的所有标点符号,以便在排序时只考虑这些字符?如果只是一个逗号让您感到困惑,您可以尝试一下。如果有几个字符,也可以嵌套替换
select *
from Names
where organization like 'Bank of America%'
order by replace(organization,',','')
SQL Server中不存在正则表达式替换,您必须使用CLR函数。看起来你最好在你的表示层中对数据进行排序。好吧,那么没有办法轻松地做到这一点。不幸的是,我不能在演示文稿上真正做到这一点,因为我一次只显示1000条记录中的20条,而我需要根据排序的整个列表进行显示。除非我在返回时对整个列表进行排序,但这可能会更慢