我有一个带有电话号码列的客户表格,其格式应该类似于“xx-xxxxxxxx”。我们如何实现?
答案 0 :(得分:2)
您的问题并不清楚您特别想要实现的目标,因此我假设您希望阻止格式错误的数据插入数据库。
您可以使用检查约束阻止格式不正确的数据插入表中。
CREATE TABLE Customer (
name VARCHAR(255),
phoneNumber VARCHAR(255),
CONSTRAINT CHK_PhoneNumber CHECK (phoneNumber LIKE '[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)
-- Succeeds
INSERT INTO Customer(name, phoneNumber) VALUES ('Bob', '12-34567890')
-- Fails
INSERT INTO Customer(name, phoneNumber) VALUES ('Anne', '123-4567890')
-- Fails
INSERT INTO Customer(name, phoneNumber) VALUES ('Tom', 'AB-34567890')
答案 1 :(得分:0)
WHN PhoneNumber LIKE'[0-9] [0-9] - [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0 -9] [0-9]'然后'正确' ELSE'不正确'
我不确定它是完全正确的,但它应该是这样的
答案 2 :(得分:0)
尝试使用varchar数据类型并使用SQL FORMAT()函数获取电话号码
答案 3 :(得分:0)
尝试以下查询:
declare @phno varchar(100)='91-11111111' // enter any number here
select CASE WHEN (
charindex('-',@phno) > 0
AND
len(left(@phno,(charindex('-',@phno)-1))) = 2
// check if only two digits before '-'
AND
ISNUMERIC(right(@phno,(charindex('-',@phno)))) > 0
// check if only numbers after '-'
) THEN @phno ELSE 'FALSE'
END as properWord
如果验证为True,则返回电话号码,否则返回' False'。