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

C# U-SQL获取字符串的最后3个字母,c#,string,u-sql,C#,String,U Sql,如何使用U-SQL获取字符串的最后3个字母?通常,在SQL中我使用RIGHT(MyText,3)。在U-SQL中,这不起作用。您需要使用C#等价物,它实际上不包括SQL的类似物对。因此,您需要使用子字符串,它看起来像这样: MyText.Substring(MyText.Length-3) 这将从第一个参数中的字符数开始子字符串,如果没有提供第二个参数,则继续到字符串的末尾 但是,作为C#但是,一切都比SQL更不友好,如果字符串长度小于3个字符,就会出错,因为只有2个字符的字符串将导致开始索引

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

您需要使用C#等价物,它实际上不包括SQL的类似物
。因此,您需要使用
子字符串
,它看起来像这样:

MyText.Substring(MyText.Length-3)
这将从第一个参数中的字符数开始子字符串,如果没有提供第二个参数,则继续到字符串的末尾

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

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

谢谢你非常清楚的解释!这对我有用!您是否也知道我如何在示例{“pears\”:200、“lemons\”:300、“oranges\”:400}中指定我要在“{“pears\”:和“lemons\”之间提取值(在我的示例中是200)。非常感谢您的帮助!您的源文件是JSON还是只有那么一点点?如果您只想提取与
pears
关联的值,那么可以使用正则表达式,例如
Regex.Match(MyText,@“\\”pears\\”“:\d+”)。value.Substring(10)
虽然这不是很干净。如果源文件是JSON,您应该使用自定义JSON提取器,如示例所示。它是JSON{“数据”:{“产品”:“{“梨\”:200,“柠檬\”:300,“橙子\”:400}。当我使用正则表达式时,它给我一个用户表达式内部异常错误:startIndex不能大于字符串的长度。@Julia由于您的源数据是Json,我建议您使用Json提取器,而不是自己尝试解析数据。
(MyText ?? String.Empty).Length < 3
  ? MyText
  : MyText.Substring(MyText.Length-3)