SQL:帮助规范化数据

时间:2015-03-31 01:16:10

标签: sql sql-server database tsql database-normalization

我有一个像这样的列的表:

Name
-----
ABC\name1
DEFG\name2 
ABC\name3
xy\name4
ghi\name5

我正在尝试将“\”字符的“名称”列中的字段分开。删除“\”之前的所有内容,包括“\”,或将Name列分成2个新列,如下所示:

Domain  Name
------------
ABC     name1
DEFG    name2 
ABC     name3
xy     name4
ghi     name5

如何将查询更新表格看起来像这样?

谢谢!

1 个答案:

答案 0 :(得分:1)

根据Aaron Bertrand先生的评论,您可以使用SUBSTRINGCHARINDEX

;WITH TestData(Name) AS(
    SELECT 'ABC\name1' UNION ALL
    SELECT 'DEFG\name2' UNION ALL
    SELECT 'ABC\name3' UNION ALL
    SELECT 'xy\name4' UNION ALL
    SELECT 'ghi\name5'
)
SELECT
    Domain = SUBSTRING(Name, 1, CHARINDEX('\', Name) - 1),
    Name = SUBSTRING(Name, CHARINDEX('\', Name) + 1, LEN(Name) - CHARINDEX('\', Name))
FROM TestData

<强> RESULT

Domain     Name
---------- ----------
ABC        name1
DEFG       name2
ABC        name3
xy         name4
ghi        name5