我正在尝试搜索格式错误的电话号码。我可以在第一个破折号之前和之后获得字符串的长度。我在中间数字上画了一个空白。这是我到目前为止所做的。
CREATE TABLE Phone
( PhoneNum varchar(12) NULL)
INSERT INTO Phone (PhoneNum )
VALUES ('11-1111-2369'),('236-5469-111'), ('239-279-7777')
SELECT LEN(LEFT(PhoneNum,CHARINDEX('-',PhoneNum)-1)),
LEN(Right(PhoneNum,CHARINDEX('-',REVERSE(PhoneNum))-1)), PhoneNum FROM
Phone
我希望看看两个破折号之间的任何长度是否为LEN = 3以外的其他东西
这似乎有效
SELECT LEN( REPLACE(phonenum,'-','')) -(LEN(LEFT(PhoneNum,charindex('-
',PhoneNum)-1)) + LEN(Right(PhoneNum,CHARINDEX('-',REVERSE(PhoneNum))-1))) ,
PhoneNum from phone
答案 0 :(得分:4)
不确定什么是正确的组合,但例如假设xxx-xxx-xxxx
"rewrites": [
{
"source": "/api/**",
"function": "api"
}
将获得正确的手机
select * from phone where PhoneNum like '___-___-____'
不正确的
此外,这计算破折号之间的len
select * from phone where PhoneNum not like '___-___-____'
对LIKE运算符通配符的引用: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql
答案 1 :(得分:2)
我希望看看两个破折号之间的任何长度是否为LEN = 3以外的其他东西
在这种情况下,另一种方法是根本不计算长度,而是使用模式匹配:
SELECT PhoneNum
FROM Phone
WHERE PhoneNum NOT LIKE '%-___-%'
注意:与Horaciux的答案不同,我在模式中使用%
。这样可以处理模式的第一和第三位长度变化。