首页 > 解决方案 > U-SQL 获取字符串的最后 3 个字母

问题描述

如何使用 U-SQL 获取字符串的最后 3 个字母?通常,在 SQL 中我使用RIGHT(MyText, 3). 在 U-SQL 中不起作用。

标签: c#stringu-sql

解决方案


您需要使用 C# 等价物,它实际上不包含 SQL 的类似物right。因此,您需要使用Substring,它看起来很天真:

MyText.Substring(MyText.Length-3)

这将从第一个参数中的字符数开始子字符串,如果没有提供第二个参数,则继续到字符串的末尾。

然而,作为 C#,一切都比 SQL 更不友好,如果您的字符串长度小于 3 个字符,则会出错,因为只有 2 个字符长的字符串将导致起始索引为2 - 3 = -1,这是不允许的。所以一个稍微更健壮的解决方案是:

MyText.Length < 3
  ? MyText
  : MyText.Substring(MyText.Length-3)

当字符串短于 3 个字符时,它会返回整个字符串。null但是,如果您的字符串可以保存值,这也会有问题。所以为了更加健壮,我们可以添加一个??检查,它相当于一个 SQL isnull()

(MyText ?? String.Empty).Length < 3
  ? MyText
  : MyText.Substring(MyText.Length-3)

推荐阅读