拆分全名字段的 SSRS 报告表达式

SSRS Reporting Expression to Split Full Name Field

我一直在努力让它正常运行,但运气不好。

数据库基本字段只有FULL NAME字段,在某些情况下包含中间名,而在另一些情况下不包含中间名。

我一直在尝试使用下面的 ssrs 表达式来显示 LastName、FirstName:虽然这适用于字段中没有中间名首字母或名称的名称....对于那些包含中间名 initials/name,我们 运行 遇到显示问题。

=Right(Fields!agent_name.Value,Len(Fields!agent_name.Value)-Instr(Fields!agent_name.Value," ")) & ", " & (Left(Fields!agent_name.Value,Instr(Fields!agent_name.Value," ")))

但它包括首先显示的中间声母.. 例如:

如果全名字段是 John S Doe,上面的表达式显示为:

S Doe, John

我需要显示的是:

Doe, John

如何设置我的表情来去掉中间的 initial/name 来显示?

我进行了大量研究并尝试了很多差异表达式,但没有成功。提前致谢。

尝试使用这个表达式:

=RIGHT(
Fields!agent_name.Value,LEN(Fields!agent_name.Value)-InStrRev(Fields!agent_name.Value," "))
 & ", " & LEFT(
 Fields!agent_name.Value,
 InStr(Fields!agent_name.Value," ")-1
)

这是一个原生 SSRS 解决方案,但我建议使用自定义代码来获得可维护的解决方案。

更新: 正则表达式解决方案:

=System.Text.RegularExpressions.Regex.Replace(
  Fields!agent_name.Value,
  "(\w+)\s+(\w+\.*\s)?(\w+)",
  ", "
 )

如果有帮助请告诉我。

虽然效率稍低,但这是实现结果的一种简洁方法:

=Split(Fields!agent_name.Value," ")(Split(Fields!agent_name.Value," ").Length-1) + ", " + Split(Fields!agent_name.Value," ")(0)

编辑:以上确实不适用于后缀。如果是第二个名字且长度为 1,下面的表达式将删除中间名首字母,您可以在计算字段中使用它。但是名字 "Ann Marie" 会失败,first/last 交换需要单独处理。

=IIF(Split(Fields!agent_name.Value," ")(1).Length=1,Replace(Fields!agent_name.Value, " " + Split(Fields!agent_name.Value," ")(1) + " "," "),Fields!agent_name.Value)

简而言之,您最好在代码中处理它。但即便如此,如果您的全名字段 space-inclusive 超出了您想要分隔的范围,则可能会出现模棱两可的情况,例如无后缀和首字母的 "Ann Marie van Der Beek".