【问题标题】:C# equivalent of Substring & Patindex of Sql serverC# 等效于 Sql 服务器的 Substring 和 Patindex
【发布时间】:2023-01-08 16:20:10
【问题描述】:

我有以下 SQL Server 代码,我想在 C# 代码中执行这些代码。 逻辑是 - 删除前导零 请帮我把代码翻译成 C#。


DECLARE @TESTVariable as varchar(500)
Set @TESTVariable = '00013025990'

SELECT Substring(@TESTVariable, Patindex('%[^0 ]%', @TESTVariable + ' '), Len(@TESTVariable))



预期输出

input output
'001' '1'
'00' '0'
'00013025990' '13025990'

【问题讨论】:

  • str.TrimStart('0')
  • 看看 TrimStart。同样,如果只有零,它将返回空,因此在您的代码中添加一个检查 TrimStart('0')

标签: c# .net sql-server .net-core


【解决方案1】:
  1. String.TrimStart(Char) 方法用于从当前字符串的前缘删除指定字符。

     string s= "00013025990";
     var result = s.TrimStart('0');
    
  2. 或将字符串转换为数字,以便从开头删除零(此方法仅适用于 zero character

    var result=int.Parse(s); 
    

    如果你想得到'0' from '00'TrimStart是不正确的,你必须使用第二种方式。

【讨论】:

    【解决方案2】:

    与其将 T-SQL 代码直接转换为大致等效的 .NET,不如考虑使用 String.TrimStart 方法来完成此任务。

    var TESTVariable = "00013025990";
    Console.WriteLine(TESTVariable.TrimStart('0'));
    

    我从你的编辑中看到你可能有一个你想要保留的零值。如果字符串值是整数,则可以使用 ParseToString 删除前导零,最后一个零除外:

    Console.WriteLine(Int64.Parse("001").ToString("0"));
    Console.WriteLine(Int64.Parse("00").ToString("0"));
    Console.WriteLine(Int64.Parse("00013025990").ToString("0"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2010-10-22
      • 2020-01-18
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多