Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控制SQL Server Order by子句中指定排序的字符_Sql_Sql Server_Sorting_Sql Order By - Fatal编程技术网

控制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条,而我需要根据排序的整个列表进行显示。除非我在返回时对整个列表进行排序,但这可能会更慢