gpt4 book ai didi

sql-server - SQL Regex 获取电话号码

转载 作者:行者123 更新时间:2023-12-01 06:20:11 24 4
gpt4 key购买 nike

我想获取满足特定条件的文本字符串的电话号码:

  • 9 个字符(数字)
  • 您只能从 9,8,7,6
  • 开始

    我尝试使用表达式:
    '^\(?(9|8|7|6)\)?([0-9]{8}))$' 

    在以下功能中:
    DECLARE @str VARCHAR(MAX)
    DECLARE @validchars VARCHAR(MAX)

    SET @str = 'TESTING1234 997711056'
    SET @validchars = '^\(?(9|8|7|6)\)?([0-9]{8}))$'

    WHILE PATINDEX('%' + @validchars + '%',@str) > 0
    SET @str=REPLACE(@str, SUBSTRING(@str ,PATINDEX('%'+ @validchars +'%',@str), 1) ,'')


    SELECT @str

    我需要得到 997711056 但我总是得到完整的文本字符串。我的错误是什么?

    最佳答案

    PATINDEX不是正则表达式函数。您只能使用一组有限的模式标识符和通配符。来自 MSDN :

    % : Any string of zero or more characters.
    _ (underscore) : Any single character.
    [] : Any single character within the specified range ([a-f]) or set ([abcdef]).
    [^] : Any single character not within the specified range ([^a-f]) or set ([^abcdef]).



    以下将连续匹配九位数字,从 6、7、8 或 9 开始:
    SET @validchars = '[6-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

    您对 SUBSTRING 的使用也不正确。看起来您的代码正试图从字符串中消除数字的字符。以下是如何获取删除数字的字符串:
    DECLARE @str VARCHAR(MAX)
    DECLARE @validchars VARCHAR(MAX)

    SET @str = 'TESTING1234 997711056 sdfgdfg'
    SET @validchars = '[6-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    DECLARE @idx INT
    SET @idx = PATINDEX('%'+ @validchars +'%',@str)
    IF @idx > 0 AND
    (@idx = LEN(@str)-8
    OR PATINDEX(SUBSTRING(@str,@idx+9,1),'[0-9]')=0)
    SET @str=REPLACE(@str,SUBSTRING(@str ,PATINDEX('%'+ @validchars +'%',@str), 9),'')
    ELSE SET @str = ''
    SELECT @str

    您声明您只想检索字符串中的数字;这是如何做到的:
    DECLARE @str VARCHAR(MAX)
    DECLARE @validchars VARCHAR(MAX)

    SET @str = 'TESTING1234 997711056 sdfgdfg'
    SET @validchars = '[6-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    DECLARE @idx INT
    SET @idx = PATINDEX('%'+ @validchars +'%',@str)
    IF @idx > 0 AND
    (@idx = LEN(@str)-8
    OR PATINDEX(SUBSTRING(@str,@idx+9,1),'[0-9]')=0)
    SET @str=SUBSTRING(@str ,PATINDEX('%'+ @validchars +'%',@str), 9)
    ELSE SET @str = ''
    SELECT @str

    关于sql-server - SQL Regex 获取电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740423/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com