首页 > 解决方案 > 将一列一分为二并在 mssql 中排序

问题描述

我是 sql 新手,我需要在 MSSQL 中执行此操作:我有一个带有用户 ID、全名、年龄等的简单表,其中 fullname 显然是 firstname lastname,例如“Adam Smith”

我只需要根据姓氏对表格进行排序。到底有没有?

标签: sql-serverselect

解决方案


如果只有 1 个姓氏,那么您可以使用PARSENAME技巧。

这是一个通常用于从对象名称中获取指定部分的函数。
例如'[mytable]''[myschema].[mydatabase].[mytable]'.
所以它按点分割字符串。

你的字符串有空格。
当空格替换为点时,很容易通过 PARSENAME 从右边获取第一个元素。

SELECT *
FROM yourtable
ORDER BY parsename(replace(fullname,' ','.'),1)

但请注意,当元素超过 4 个时,PARSENAME 返回 NULL。


推荐阅读