子串直到找到号码

时间:2012-11-21 07:01:46

标签: sql

我有一个字符串LCD32W58。在这个字符串中我想要子字符串,直到我得到数字
例如LCD32W58 --> LCD

如果字符串在开头包含数字,那么我想要数字直到字符开始
例如55LM9600 --? 55

2 个答案:

答案 0 :(得分:0)

你可以使用这样的东西

if @nString like '[0-9]%'
    select @Result = left(@nString, patindex('%[A-Za-z]%', @nString) - 1)
else if @nString like '[A-Za-z]%'
    select @Result = left(@nString, patindex('%[0-9]%', @nString) - 1)

您还可以使用numbersnot numbers样式

if @nString like '[0-9]%'
    select @Result = left(@nString, patindex('%[^0-9]%', @nString) - 1)
else
    select @Result = left(@nString, patindex('%[0-9]%', @nString) - 1)

答案 1 :(得分:0)

只有在字符串中只有数字和字母

时,此方法才有效
private string ParseString(string s)
{            
    int i = 0;
    int j = 0;
    foreach (char c in s)
    {            
        if (isAlphanummeric(c)
        {
            if (j > 0)
                break;
            i++;
        }
        else if(isNummeric(c)
        {
            if (i > 0)
                break;
            j++;
        }
        else
        {
            throw new NotSupportedException(
                      "Only letters and numbers are expected.");
        }
    }

    return (s.Substring(0, (i > 0 ? i: j)));
}

private bool isAlphanummeric(Char decValue)
{
   return ((decValue > 64) && (decValue < 91)) ||
          ((decValue > 98) && (decValue < 123));
}

private bool isNummeric(Char decValue)
{
   return ((decValue > 47) && (decValue < 58));
}