Validate telephone number in SQL Server 2000

时光总嘲笑我的痴心妄想 提交于 2020-01-01 19:53:30

问题


Does anyone have a nifty way of validating telephone numbers using sql (SQL Server 2000).

I need to select all users fro ma Db that have valid phone number

Thanks Sp

Valid number 
08450000000
01332000000
07444000000
+441332000000

Standard UK numbers


回答1:


If you have a regular expression to match the number, you can install a regex extended stored procedure on your SQL Server. I installed this extended stored procedure at work and we use it quite a bit. There are several procedures (each with corresponding function wrappers):

  1. check for matches (yes, no)
  2. check for matches (count)
  3. search and replace
  4. format
  5. split

To find matches you would use it as such:

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

Where 'someRegex' is the regular expression matching the format you are looking for. This site has some matches on it, but I'm not sure how well they work since I'm not familiar with UK numbers whatsoever.




回答2:


Allow the user to enter numbers in a variety of formats with various dial prefixes and punctuation.

Strip the dial prefix digits, remove spacing and punctuation. Validate the number has the right number of digits and is in a valid range and then store the number in your database in E.164 format with full country code.

This allows you to make bulk area code changes as they happen as well as make it easy to pull all numbers for a country unambiguously.

Store the number without spaces or punctuation.

Use country-specific formatting rules to format the number correctly for display.

UK numbers are quite complex. There's full data here: http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers

It describes the selection, validation and formatting processes in detail.




回答3:


This website has extremely thorough validation for UK telephone numbers, with code examples in JavaScript, VBScript, & PHP. You will need to translate this to use in a SQL Server stored procedure, but the principle should be straightforward to follow.

UK Telephone Number Validation - JavaScript, VBScript, & PHP




回答4:


I don't knwo the exact rules that define a valid UK phone number and as you have not provided any rules to validate a Phone no, I just picked rules listed in the url provided by Colin Pickard in his answer.

The following rules are checked for validating UK phone number - 1. Telephone number provided is not null 2. Telephone number does not contain the required 10 or 11 digits. 3. A valid full UK telephone numbers must start with a 0

If there are any rules that I missed out, you can add the check for those conditions too in this function.

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


来源:https://stackoverflow.com/questions/4068588/validate-telephone-number-in-sql-server-2000

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!