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 表达式在字段中切换姓氏、名字到名字姓氏的主要内容,如果未能解决你的问题,请参考以下文章