удалить определенный символ из varchar при получении данных с помощью запроса - PullRequest
1 голос
/ 17 сентября 2009

Я хочу удалить определенный символ при получении varchar из таблицы. Запрос выглядит так:

SELECT ServiceName,
       case isNumeric(Ramusage) 
         when 1 then 
           cast ( ltrim ( rtrim ( ramusage )) as int )
         else 
           0 
       end as test,
       priority
  FROM ProcessInfo

Здесь проблема в том, что ramusage - это varchar, и он хранит значения, такие как 12 500 K, 4 321 K.

Здесь я хочу удалить k из записи и отобразить только номер.

Ответы [ 3 ]

4 голосов
/ 17 сентября 2009

Вы хотите использовать функцию ЗАМЕНА:

REPLACE(ramusage, 'k', '')

Справка:

2 голосов
/ 17 сентября 2009

Использовать REPLACE

DECLARE @ProcessInfo TABLE(
        ServiceName VARCHAR(MAX),
        Ramusage VARCHAR(MAX),
        priority INT
)

INSERT INTO @ProcessInfo (ServiceName,Ramusage,priority)
SELECT 'TEST','12,123K',1

SELECT ServiceName,
       case isNumeric(REPLACE(REPLACE(Ramusage,'K',''),',','')) 
         when 1 then 
           cast ( ltrim ( rtrim ( REPLACE(REPLACE(Ramusage,'K',''),',',''))) as int )
         else 
           0 
       end as test,
       priority
  FROM @ProcessInfo

мы создали функцию CLR, которая принимает строку и удаляет все нечисловые элементы

[Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString RemoveNonNumeric(SqlString strValue)
    {
        string strNew = strValue.ToString();

        char[] chrArray = strNew.ToCharArray();

        strNew = null;

        for (int iChar = 0; iChar < chrArray.Length; iChar++)
        {
            if (Char.IsNumber(chrArray[iChar]))
                strNew += chrArray[iChar];
        }

        // Put your code here
        return new SqlString(strNew);
    }
0 голосов
/ 17 сентября 2009
substr( ltrim( rtrim( ramusage ) ), length( ramusage ) - 1)

edit: replace, как упоминалось в ответах ниже, значительно лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...