U-SQL 获取字符串的最后3个字母

U-SQL get last 3 letters of a string

如何使用 U-SQL 获取字符串的最后 3 个字母?通常,在 SQL 中我使用 RIGHT(MyText, 3)。在 U-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)

即returns整个字符串小于3个字符时。不过,如果您的字符串可以容纳 null 值,这也会有问题。因此,为了更加稳健,我们可以添加一个 ?? 检查,这相当于 SQL isnull():

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