0

我的 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', "")

所以我有两个问题:

  1. 如何使用 RegEx 将列值替换为更新语句?
  2. (如果第一个不可能)我可以通过使用 pyodbc 连接到数据库来更改数据库中的值,并且在修改表时只使用 python synthax 吗?
4

2 回答 2

1

由于您的数字后跟一个空格,因此您可以在不使用正则表达式的情况下删除(包括)第一个空格的所有内容:

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 的最大值,所以你的字符串保证小于它。

于 2019-09-28T11:19:10.827 回答
0

如果数字部分的长度始终为 5 个字符和 1 个空格,那么 Right(Column,len(column)-6) 应该可以工作。

于 2019-09-27T11:26:12.677 回答