代码之家  ›  专栏  ›  技术社区  ›  Steven

在SQL Server 2000中验证电话号码

  •  0
  • Steven  · 技术社区  · 15 年前

    有没有人用sql(sql Server 2000)来验证电话号码。

    我需要从具有有效电话号码的ma Db中选择所有用户

    服务提供商

    Valid number 
    08450000000
    01332000000
    07444000000
    +441332000000
    

    英国标准号码

    4 回复  |  直到 15 年前
        1
  •  0
  •   pinkfloydx33    15 年前

    如果有与数字匹配的正则表达式,则可以在SQL Server上安装正则表达式扩展存储过程。我安装了 this extended stored procedure

    1. 检查是否匹配(是、否)
    2. 检查匹配项(计数)
    3. 搜索和替换
    4. 格式
    5. 分裂

    要查找匹配项,您可以这样使用它:

     select number 
     from numberTable
     where dbo.fn_pcre_match(number, 'someRegex') = 1
    

    This site 有一些匹配的,但我不确定他们有多好,因为我不熟悉英国的数字无论如何。

        2
  •  2
  •   g1smd    13 年前

    去掉拨号前缀数字,删除间距和标点符号。验证数字的位数是否正确,是否在有效范围内,然后将数字以E.164格式存储在数据库中,并提供完整的国家代码。

    这使您可以在发生大容量区号更改时进行更改,并使您可以轻松地明确地为一个国家提取所有号码。

    存储不带空格或标点符号的数字。

    使用特定于国家/地区的格式规则正确设置数字的格式以供显示。

    英国的数字相当复杂。这里有完整的数据: http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers

        3
  •  1
  •   Colin Pickard    15 年前

    该网站对英国电话号码进行了非常彻底的验证,并提供了JavaScript、VBScript和PHP中的代码示例。您需要将其转换为在SQL Server存储过程中使用,但原则应该很简单。

    UK Telephone Number Validation - JavaScript, VBScript, & PHP

        4
  •  -1
  •   pavanred    15 年前

    我不知道确切的规则来定义一个有效的英国电话号码,因为你没有提供任何规则来验证一个电话号码,我只是在他的回答中选择了Colin Pickard提供的url中列出的规则。

    检查以下规则以验证英国电话号码- 一。提供的电话号码不为空 2。电话号码不包含所需的10或11位数字。 三。有效的完整英国电话号码必须以0开头

    ALTER FUNCTION [dbo].[ValidatePhoneNo] 
    (   
        @PhoneNo varchar(20) 
    )
    RETURNS varchar(10)
    AS
    BEGIN
        DECLARE @Result varchar(10)
        SET @RESULT = 'invalid'
    
        IF len(@PhoneNo) > 9 AND len(@PhoneNo) < 12 AND @PhoneNo IS NOT NULL AND (substring(@PhoneNo,1,1) = 0)
        BEGIN
            SET @Result = 'valid'
        END
    
        RETURN @RESULT
    END