s-s-rS 表达式在字段中切换姓氏、名字到名字姓氏

Posted

技术标签:

【中文标题】s-s-rS 表达式在字段中切换姓氏、名字到名字姓氏【英文标题】:s-s-rS Expression to Switch LastName, FirstName to FirstName LastName in field 【发布时间】:2021-09-03 06:36:52 【问题描述】:

SQL Server 2016 s-s-rS 2016 IDE Visual Studio 2017

问题:报告字段包含Doe, John的值

解决方案/输出:使用 s-s-rS 表达式要求字段输出John Doe

我的表达式的当前示例在我运行预览时给我一个#error:

=Split(Fields!Name.Value,",")(1).ToString() &","& Split(Fields!Name.Value,",")(0).ToString()

我在网上找到了上面的例子,但是抛出了一个错误。 s-s-rS 高级表达式相对较新。 我没有编辑 T-SQL 查询的选项

【问题讨论】:

“但是会抛出错误” 那是什么错误? 如果名字没有逗号,肯定会失败。我想你的名字中没有 ,。 @Larnu 预览中返回的错误是:#Error(在表达式所在的字段中) @shahkalpesh 回顾 T-SQL 查询后,您是正确的。此列/字段名称的 SELECT 语句包含在 COALESCE 语句中,如下所示: ,COALESCE(d.Name, 'Not Available') AS Name @shahkalpesh 谢谢。将 s-s-rS 表达式包装在 IIF 语句中以首先检查“不可用”并且如果错误则拆分字符串是否有意义? 【参考方案1】:

这应该可以工作...

=SWITCH(
    split(Fields!Name.Value, ",").length = 1, Fields!Name.Value,
    True, TRIM(split(Fields!Name.Value + ",", ",")(1))
        + " "
        + TRIM(split(Fields!Name.Value + ",", ",")(0))
    )

我在这里所做的是... 对于第一个 SWITCH 表达式对,检查名称是否只有一个元素,如果它确实返回名称(例如“不适用”)。此方法更安全,因为它可以处理不存在逗号的任何内容。

第二部分True 就像ELSE 在这种情况下,我在 Name 字段值的末尾添加了一个逗号,以便评估的字符串始终至少有 1 个逗号(从而防止错误)。我还修剪了结果,以免出现不需要的空格。

我们现在得到了这些结果

【讨论】:

以上是关于s-s-rS 表达式在字段中切换姓氏、名字到名字姓氏的主要内容,如果未能解决你的问题,请参考以下文章

访问报表/查询设计

中文名如何转换正确英文名

如何在 Mailchimp 中仅获取成员字段名称(电子邮件地址、名字、姓氏)

固定长度记录

css 设置客户端访问中名字和姓氏字段的字体粗细。

sql MySQL:从完整的“名称”字段中提取姓氏和名字(对于Elgg)