如何在 sql server 中定位自由文本字段中的 16 位数字字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 sql server 中定位自由文本字段中的 16 位数字字符串?相关的知识,希望对你有一定的参考价值。

我试图为我每天生成的一份报告制定一个解决方案。 有一个自由文本字段必须被选中,但有可能出现一个16位的CC号。 我需要找到一种方法来定位和排除这些。 有什么好办法吗?

答案

你可以使用 patindex():

select patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', col)

这给了你图案开始的偏移量。

另一答案
DECLARE     @CCNumber   varchar(20) =   '1234 5678 9012 3456'   -- CC Number
DECLARE     @Table      TABLE   (FreeTextField varchar(max))    -- Sample Table with one FreeTextField
INSERT INTO @Table      VALUES
            ('This is a text without any CC number')
        ,   ('This a text with the CC number 1234 5678 9012 3456')
        ,   ('This another text without any CC number')
        ,   ('This another text with the CC number 1234 5678 9012 3456')

-- The following script will show only rows without the CC Number
SELECT  FreeTextField
FROM    @Table
WHERE CHARINDEX(@CCNumber, FreeTextField) = 0

-- If you want to show all rows, but mask the CC Number then do the following
DECLARE @MaskCCNumber varchar(20) = '#### #### #### ####'

SELECT  FreeTextField =  REPLACE(FreeTextField, @CCNumber, @MaskCCNumber)
FROM    @Table

以上是关于如何在 sql server 中定位自由文本字段中的 16 位数字字符串?的主要内容,如果未能解决你的问题,请参考以下文章

在sql server 数据库字段中如何加入回车符和换行符?

PB语言如何解析一个以TAB分割的文本文件,并把文件内容读取到SQL Server数据库中? 希望能给出代码,谢谢

如何在 SQL Server 中解析 json 格式的字符串

我知道字段内容,并不知道字段名,如何在数据库中快速找到或查询出所在的表?SQL SERVER 2000。

在SQL Server中读和写JSON

在 SQL Server 存储过程中拆分文本