Как получить кроме чисел в строке (удаление чисел в строках) в sqlserver - PullRequest
0 голосов
/ 03 февраля 2010

как обрезать числа в строке в sqlserver

ForEx: строковое значение: 200 Не может быть [34534]

Результат: многих не будет (результат содержит только цифры)

Ответы [ 2 ]

0 голосов
/ 03 февраля 2010

SQL Server изначально не поддерживает регулярные выражения в функции REPLACE(). Вы пробовали один из этих подходов:

  1. Использование поддержки регулярных выражений .NET путем интеграции SQL Server и CLR
  2. Напишите хранимую процедуру или пользовательскую функцию, которая перебирает строку и использует PATINDEX () для поиска номеров (PATINDEX позволяет указать шаблон для поиска, REPLACE - нет)

Оба из них имеют некоторые последствия для производительности, поэтому я буду осторожен в том, как вы их используете.

0 голосов
/ 03 февраля 2010

Если вы хотите удалить все числа из строки, есть несколько возможных способов:

1) чистый TSQL:

например. (не обязательно лучший / самый красивый способ)

DECLARE @Test VARCHAR(50)
SET @Test = 'Test12value8with numbers'

DECLARE @index INTEGER
SELECT @index = PATINDEX('%[0-9]%', @Test)

WHILE (@index > 0)
    BEGIN
        SET @Test = LEFT(@Test, @index - 1) + RIGHT (@Test, (LEN(@Test) - @index))
        SELECT @index = PATINDEX('%[0-9]%', @Test)
    END

SELECT @Test

2) Функциональность CLR (SQL 2005+) - создайте функцию CLR для замены (т.е. в .NET) и вызовите эту функцию

3) вообще не выполняйте манипуляцию в SQL, возвращайте данные как есть и оставляйте форматирование / очистку до вызывающего кода (который будет работать лучше при манипуляции со строками).

Третий вариант - тот, который я, естественно, выберу, если только для этого нет веской причины.

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