希望在某个随机位置找到嵌入字符串中的数字 - MS SQL Server 2008 R2

Looking to find a number embedded in a string at some random place - MS SQL Server 2008 R2

我正在将旧的访问数据库转换为 SQL 解决方案。用户使用一个六位数的评论字段(有时)。它是一个自由格式的字段,包含 "ID# 123456"、“123456”、"ID #123456" 等内容。然而,在许多情况下,它只是包含随机注释,其中包含一些数字,例如日期或其他数字。

我想做的(因为这不是超级关键,只是让数据库朝着正确填充该字段的方向启动),在我的 select into 语句中是 if此评论字段中有六个连续的数字,将它们插入我专门用于此数字的新字段中。

我尝试了各种修剪和其他方法,但没有得到足够的结果。

谢谢!

假设 Sql 服务器是您的新数据库,您可以尝试这样的操作:

Select *
From   LegacyTable
-- Where Comment LIKE '%\d\d\d\d\d\d%' This doesn't work
Where Comment Like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'

这应该 return 行在评论列中连续有 6 个数字。

尝试以下方法

到select只有6个连续数字的字段

select * from LegacyTable
where Comment like '%[0-9][0-9][0-9][0-9][0-9][0-9]%'

从字符串中提取这六位数字

select Comment
substring(Comment,PatIndex('%[0-9][0-9][0-9][0-9][0-9][0-9]%',Comment),6) as nbr
from legacytable
where Comment like '%[0-9][0-9][0-9][0-9][0-9][0-9]%'