sql - SQL 新手:仅将名字从全名字段导入到报表生成器(数据源查询)
问题描述
我敢肯定这可能是一个非常简单的问题,但我是 SQL 新手,我在论坛上找不到任何可以准确解决我想要完成的内容的内容,所以请耐心等待。
我在 SQL Server 报表生成器中工作。我正在设置我的数据源和查询。我正在查询的表只有一个“全名”字段,但是,在此报告中,我需要将其拆分为“名字”和“姓氏”。如果可能的话,我想直接从 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 命令,但遇到了类似的问题。它要么切断了名字的一部分,忽略了“次要”名字,要么打印了名字,前面有一个我似乎无法摆脱的空格。例如,我能得到的最接近的是:
SELECT DISTINCT [Zip Code]
,PARSENAME(REPLACE([Full Name], ',', '.'), 1) AS [FirstName]
FROM [SomeDB].[dbo].[T_MAIN_LIVE]
...但我留下了一个前面的空间。也许我只需要事后消除前面的空格?如果是这样,我应该怎么做?
同样,我确信这对 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
编辑:这假设在所有情况下都有一个逗号分隔姓氏和名字。
推荐阅读
- html - 将 li 图标更改为字体真棒图标
- javascript - 在猫鼬中更新它们时如何访问每个文档字段
- android - android.R.color.primary_text_light 已弃用:现在该怎么办?
- c# - 如何使用上下文工厂从 CLI 运行 EF 数据库更新
- css - Flexbox UL LI 在两列中,第一列内容右对齐,第二列内容左对齐
- r - 按数字和着色因子排序的堆栈条图
- javascript - 需要在 Javascript 中使用正则表达式
- python - 如何在 Fedora 30 上安装 dlib?
- javascript - 为什么我的正则表达式没有拆分为 '$$$' 分隔符?
- java - 使用 Neo4j 服务器的 Spring 声明式事务管理