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)
如何使用 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)