希望在某个随机位置找到嵌入字符串中的数字 - 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]%'
我正在将旧的访问数据库转换为 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]%'