SQL:如何从fullname解析firstname,lastname和title?

时间:2017-10-18 13:37:44

标签: sql-server database

我在表1中有一个名为Employee name的列

Example: Mr.FirstName LastName

等各种各样的标题,但是同一列中没有标题的员工姓名。我即将拆分单列并在新表(表2)中插入三个不同的列,如FirstName,LastName因此,在插入新表时,我无法像我提到的那样拆分员工列名。任何帮助都会非常感激我从LINQ开始,所以我不了解很多SQL函数。

更新:示例数据

enter image description here

2 个答案:

答案 0 :(得分:1)

对于您在问题中指定的最简单的情况,以下查询应该起作用

  SELECT *,
  SUBSTRING(Employee_name, 0, CHARINDEX('.', Employee_name)) AS Title,
  SUBSTRING(Employee_name, 
            CHARINDEX('.', Employee_name)+1,
            CHARINDEX(' ', Employee_name)) AS FirstName,
  SUBSTRING(Employee_name, 
            CHARINDEX(' ', Employee_name)+1,
            LEN(Employee_name)) AS LastName         
FROM Employee; 

答案 1 :(得分:1)

这是一个例子。

DECLARE @name varchar(100) = 'Mr.FirstName LastName'

SELECT
LEFT(@name, CHARINDEX('.', @name)) AS Title,
SUBSTRING(@name, CHARINDEX('.', @name)+1, CHARINDEX(' ', @name)-CHARINDEX('.', @name)) AS FirstName,
SUBSTRING(@name, CHARINDEX(' ', @name)+1, 1000) AS LastName

需要......

  • 左侧部分,直至.为标题。
  • .之后的所有内容,直到第一个space为FirstName
  • 第一个space之后的所有内容,作为LastName

注意:如果名称不适合此模式,则不会检查错误。