我试图解析全名,将其读作名字、中间名、姓氏和后缀。我已经尝试了半段SQL代码,但我需要帮助根据以下逻辑获取后缀。
如果没有后缀,则留下字段NULL如果没有中间名,则留下字段NULL
,Ltrim(子字符串(名称,1,Isnull(Nullif(CHARINDEX(“”,NAME),0),1000))作为FirstName,Ltrim(子字符串(名称,CHARINDEX(“”,NAME),CASE WHEN(CHARINDEX(“”,NAME,CHARINDEX(“”,NAME)1)-CHARINDEX(“”,NAME))
,Ltrim(SUBSTRING(NAME,
Isnull(Nullif(CHARINDEX(' ', NAME, Charindex(' ', NAME) + 1), 0), CHARINDEX(' ', NAME)), CASE
WHEN Charindex(' ', NAME) = 0
THEN 0
ELSE LEN(NAME)
END)) AS LastName
Thanks in advance
Example:
an example of the full name is Alexander BC Brendel Jr , The desired outcome would be First - Alexander Middle - BC Last - Brendel Suffix - Jr
|HdrName |FirstName |MiddleName |LastName |Suffix|
|-------- |--------- |----------- |---------- |------|
|Alexander BC Brendel Jr|Alexander |BC |Brendel |Jr |
|Thomas J Abraham Sr |Thomas |J |Abraham |Sr |
如果HdrName列的格式是恒定的,完全由四个部分组成,那么你很幸运——SQL服务器中有一个特殊的功能完全适合你的情况:
DECLARE @Names TABLE (HdrName VARCHAR(100));
INSERT INTO @Names VALUES ('Alexander BC Brendel Jr'), ('Thomas J Abraham Sr');
WITH PreparedNames AS
(
SELECT
HdrName,
FullName = REPLACE(HdrName, ' ', '.')
FROM
@Names
)
SELECT
HdrName ,
Suffix = PARSENAME(FullName, 1),
FirstName = PARSENAME(FullName, 4),
MiddleName = PARSENAME(FullName, 3),
LastName = PARSENAME(FullName, 2)
FROM
PreparedNames;
PARSENAME函数用于解析由四部分组成的SQL Server对象的名称,但是,如果要将名称中的空格替换为点,则可以将名称解析为SQL Server对象。
问题内容: 我发布此消息是因为该主题刚刚在另一个问题/答案中提出,并且该行为没有得到很好的记录。 考虑数据框 我想获取由column定义的每个组的第一行和最后一行。 我试过了 但是,这并没有给我我所期望的。 如何获得每个组中的实际第一个和最后一个值? 问题答案: 一种选择是使用该方法: 但是,我还没有找到一种将它们整齐地聚合的方法。当然,总是可以使用构造函数: 注意:我明确使用了该属性,否则您必须
问题内容: 我正在使用String split方法,并且我想拥有最后一个元素。数组的大小可以更改。 例: 我想分割上面的字符串并得到最后一个项目: 我不知道在运行时数组的大小:( 问题答案: 将数组保存在局部变量中,并使用数组的字段查找其长度。减去1以说明它是基于0的: 注意:如果原始字符串仅由分隔符组成,例如或,则为0,这将引发ArrayIndexOutOfBoundsException。示例:
我有一个名字列表,我想把一个人名字中的第一个和最后一个单词分开。 我试图使用“trim”功能,但没有成功。 有人能解释一下我是怎么做到的吗? 表: 因此,我想要: 谢谢
我使用的是Apache Spark,它的数据帧如下所示: 我想按字段分组,以获得的所有历元时间戳。然后我想按时间戳升序对历代进行排序,然后取第一个和最后一个历代。 我使用了下面的查询,但是和历元值似乎是按照它们在原始数据帧中出现的顺序获取的。我想把第一个和最后一个从一个有序的升序中取出来。 如何从按升序历元排序的历元列表中检索第一个和最后一个历元?
问题内容: 我有以下形式的查询: 我很难确定上个季度的正确日期。因此,假设当前日期是 7月1日 ,即第三季度,我想将 4月1日 作为FIRST,将 6月30日 作为最后 一个季度 (即第二季度)的最后一天。 谷歌搜索了一下,找到了很多解决方案,但是每个解决方案都涵盖了SQL Server和可用的时髦方法,在我们的ORACLE数据库(Oracle 10g和11g)上不可用。 哦,是的,我还需要能够将
例如,从下面的代码 这只是一个示例数据集,我有一个包含6000行的数据框,我想找到每列的第一个和最后一个值,其中我还有作为值。我也不知道我的第一个值或最后一个值的索引。 我试过了 很少有人来自Link1,Link2,但没有任何成功。我还想得到第一个元素,而不是最小值。