首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server中构建查询,以便在找到初始文本后查找文本的匹配项?

如何在SQL Server中构建查询,以便在找到初始文本后查找文本的匹配项?
EN

Stack Overflow用户
提问于 2019-09-18 02:58:49
回答 3查看 125关注 0票数 0

在SQL Server中,我有一个带有自由文本列的表,并试图在其中找到两个模式。第一个模式是一个关键字,比如" SSN ",下一个模式是在找到模式SSN之后的数字"123456789“。

我正在尝试查找关键字" SSN“和找到的关键字右侧某处的SSN编号的数据行(可以是”“、:、>、=、”"=“”、“is”等,将关键字与实际数字分隔开)。

列中的数据如下所示:

代码语言:javascript
复制
ID     myColumn
----------------------------------------------------------------------------
1      Customer's account number is 098765432 and their SSN = 123456789
2      Move account 763894571 to 918384567 because the SSN has been updated

我到处找,但真的找不到我要找的东西,希望这里有人能帮上忙。

我使用了以下查询:

代码语言:javascript
复制
SELECT ID, myColumn 
FROM myTable 
WHERE myColumn LIKE '% SSN%' 
  AND (myColumn LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%')

我的目标是只看到ID1数据,因为ID2没有SSN后跟9位数字;但是它同时显示了两行。我怎么才能提取我正在寻找的数据呢?

EN

回答 3

Stack Overflow用户

发布于 2019-09-18 03:24:14

在两种情况下仅使用LIKE一次:

代码语言:javascript
复制
SELECT ID, myColumn 
FROM myTable 
WHERE myColumn like '% SSN%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'

请参阅demo

结果:

代码语言:javascript
复制
> ID | myColumn                                                        
> -: | :---------------------------------------------------------------
>  1 | Customer's account number is 098765432 and their SSN = 123456789
票数 2
EN

Stack Overflow用户

发布于 2019-09-18 03:28:00

我的目标是只看到ID1数据,因为ID2没有后面跟9位数字的SSN;但是它同时显示了两行。我怎么才能提取我正在寻找的数据呢?

您可以使用PATINDEX,它返回字符串中某个模式开始的字符位置。

例如,您可以使用PATINDEX('%SSN%',MyColumn)来获取可以在列中找到'SSN‘的字符位置。

您还可以使用它来查看字符串中是否存在PATINDEX高于'SSN‘的PATINDEX的9位数模式。

票数 1
EN

Stack Overflow用户

发布于 2019-09-18 03:10:31

像这样的东西可能会有帮助。

代码语言:javascript
复制
SELECT ID, myColumn,  SUBSTRING(myColumn,CHARINDEX('SSN',myColumn,10), LEN(myColumn) ) 
from myTable WHERE
myColumn like '% SSN%' 
AND EXISTS (SELECT * FROM myTable t where t.id = mytable.id 
and SUBSTRING(myColumn,CHARINDEX('SSN',myColumn,10), LEN(myColumn) )  like '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57980483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档