有一个带有 varchar(100) 的大表 - OrderNum 字段值如下:
《BO2003056-2》
需要从此字段中提取所有数字字符,以便后续连接到另一个表。
例如:“BO2003056-2”将转换为“20030562”
由于 RegEx 在 TSQL 中本机不存在,那么在 TSQL 中执行此操作的最快方法是什么?
SQL 2019(数据库兼容模式 2014)
有一个带有 varchar(100) 的大表 - OrderNum 字段值如下:
《BO2003056-2》
需要从此字段中提取所有数字字符,以便后续连接到另一个表。
例如:“BO2003056-2”将转换为“20030562”
由于 RegEx 在 TSQL 中本机不存在,那么在 TSQL 中执行此操作的最快方法是什么?
SQL 2019(数据库兼容模式 2014)
像这样的东西,可能是:
您必须自己测试这是否是“最快的”,但这可能是最简单的方法。
请注意,在SQL Server 版本中
TRANSLATE()
,第三个参数(替换字符的字符串)的长度必须与第二个参数(要替换的字符)的长度相同。您可以避免计算要删除的所有字符:
在其他 DBMS 中,第三个参数可以更短,并且将简单地删除没有替换的字符,从而使这种方法更加简单。例如,在 Postgres 中: