SQL 新手:仅将名字从全名字段导入报表生成器(数据源查询)
SQL Newbie: Import First Name Only from Full Name Field to Report Builder (Data Source Query)
我确定这可能是一个非常简单的问题,但我是 SQL 的新手,我在论坛上找不到任何内容可以准确地解决我想要完成的问题,所以请耐心等待和我一起。
我在 SQL Server Report Builder 工作。我正在设置我的数据源和查询。我正在查询的 table 只有一个“全名”字段,但是,在这份报告中,我需要将它分成“名字”和“姓氏”。如果可能的话,我想直接从 Dataset->Query 部分完成所有这些操作。 “全名”字段采用以下格式:SMITH, MARK ALEXANDER
有些人有多个名字,因此,在上面的示例中,“Mark Alexander”可以成为“First Name”。
我已经能够使用 PARSENAME 为姓氏工作:
SELECT DISTINCT [Zip Code]
,PARSENAME(REPLACE([Full Name], ',', '.'), 2) AS [LastName]
FROM [SomeDB].[dbo].[T_MAIN_LIVE]
...但我无法让它在名字中正常工作。我也尝试过使用 RIGHT 命令,但遇到了类似的问题。它要么切断了部分名字,忽略了“次要”名字,要么打印了前面带有我似乎无法摆脱的 space 的名字。例如,我能得到的最接近的是:
SELECT DISTINCT [Zip Code]
,PARSENAME(REPLACE([Full Name], ',', '.'), 1) AS [FirstName]
FROM [SomeDB].[dbo].[T_MAIN_LIVE]
...但我还剩下一个 space。也许我只需要在事后删除前面的 space ?如果是这样,我应该怎么做?
再次强调,我确信这对你们 SQL 专家来说是一个简单的修复,所以我为我的无知深表歉意。
提前致谢,
卡梅伦
你可以试试这个。它对我有用。
SELECT name = 'smith, mark alexander'
INTO #name
SELECT concat(SUBSTRING(name, CHARINDEX(',', name, 1) + 1, 20), ' ', SUBSTRING(name, 1, CHARINDEX(',', name, 1) - 1))
FROM #name
编辑:假设在所有情况下都用逗号分隔姓氏和名字。
我确定这可能是一个非常简单的问题,但我是 SQL 的新手,我在论坛上找不到任何内容可以准确地解决我想要完成的问题,所以请耐心等待和我一起。
我在 SQL Server Report Builder 工作。我正在设置我的数据源和查询。我正在查询的 table 只有一个“全名”字段,但是,在这份报告中,我需要将它分成“名字”和“姓氏”。如果可能的话,我想直接从 Dataset->Query 部分完成所有这些操作。 “全名”字段采用以下格式:SMITH, MARK ALEXANDER
有些人有多个名字,因此,在上面的示例中,“Mark Alexander”可以成为“First Name”。
我已经能够使用 PARSENAME 为姓氏工作:
SELECT DISTINCT [Zip Code]
,PARSENAME(REPLACE([Full Name], ',', '.'), 2) AS [LastName]
FROM [SomeDB].[dbo].[T_MAIN_LIVE]
...但我无法让它在名字中正常工作。我也尝试过使用 RIGHT 命令,但遇到了类似的问题。它要么切断了部分名字,忽略了“次要”名字,要么打印了前面带有我似乎无法摆脱的 space 的名字。例如,我能得到的最接近的是:
SELECT DISTINCT [Zip Code]
,PARSENAME(REPLACE([Full Name], ',', '.'), 1) AS [FirstName]
FROM [SomeDB].[dbo].[T_MAIN_LIVE]
...但我还剩下一个 space。也许我只需要在事后删除前面的 space ?如果是这样,我应该怎么做?
再次强调,我确信这对你们 SQL 专家来说是一个简单的修复,所以我为我的无知深表歉意。
提前致谢, 卡梅伦
你可以试试这个。它对我有用。
SELECT name = 'smith, mark alexander'
INTO #name
SELECT concat(SUBSTRING(name, CHARINDEX(',', name, 1) + 1, 20), ' ', SUBSTRING(name, 1, CHARINDEX(',', name, 1) - 1))
FROM #name
编辑:假设在所有情况下都用逗号分隔姓氏和名字。