Как я могу обновить столбец в SQL Server, используя RegEx? - PullRequest
0 голосов
/ 27 сентября 2019

У меня в SQL Server есть столбец, который выглядит следующим образом:

Column
1.1.2 Name1
1.2.3 Name2
1.1 Name3
...

Поэтому я пытаюсь удалить эти числа перед именами с помощью оператора UPDATE, но пока не могу найтиправильный синтакс для этой работы.

Я смог сделать это на python, хотя после импорта таблицы в фрейм данных.Это выглядит примерно так: replace(r'^([0-9]*.[0-9]*.?[0-9]*?)\s\b', "").

Итак, у меня есть 2 вопроса:

  1. Как заменить значения столбца оператором обновления с использованием RegEx?
  2. (если первое невозможно) Могу ли я изменить значения из базы данных, подключившись к базе данных с помощью pyodbc, и просто использовать python synthax при изменении таблицы?

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Поскольку за вашими номерами следует пробел, вы можете удалить все, вплоть до (включая включая) первый пробел, без использования регулярных выражений:

DROP TABLE IF EXISTS #ToRemoveNumbers;
CREATE TABLE #ToRemoveNumbers([Column] VARCHAR(1000));

INSERT INTO #ToRemoveNumbers([Column])
VALUES
    ('1.1.2 Name1'),
    ('1.2.3 Name2'),
    ('1.1 Name3'  );


-- remove the numbers:
UPDATE #ToRemoveNumbers
SET [Column] = 
    SUBSTRING
    (
        [Column],
        CHARINDEX(' ', [Column]) + 1,
        2147483647
    )
;

2147483647 - это максимум из int, поэтому ваша строка гарантированнобудь меньше этого.

0 голосов
/ 27 сентября 2019

Если числовая часть всегда имеет длину 5 символов и 1 пробел, тогда Право (столбец, длина (столбец) -6) должно работать.

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