如何使用RegEx更新SQL Server中的列?

2024-09-30 07:23:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的SQL Server中有一列,如下所示:

Column
1.1.2 Name1
1.2.3 Name2
1.1 Name3
...

因此,我尝试使用UPDATE语句删除名称前面的这些数字,但到目前为止,我找不到一个正确的synthax来完成这项工作。你知道吗

不过,在数据帧中导入表之后,我可以用python来完成。它看起来像这样replace(r'^([0-9]*.[0-9]*.?[0-9]*?)\s\b', "")。你知道吗

所以我有两个问题:

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

Tags: 数据名称数据库sqlserverupdatecolumn数字
2条回答

因为数字后面跟有一个空格,所以可以删除第一个空格之前(包括第一个空格)的所有内容,而无需使用正则表达式:

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的最大值,因此保证字符串小于int。你知道吗

如果数字部分的长度始终为5个字符和1个空格,则Right(Column,len(Column)-6)应该起作用。你知道吗

相关问题 更多 >

    热门问题