SELECT FirstName
, LastName
, Phone
, balance
FROM customers
WHERE balance > 0
AND phone != ''
AND char_length(phone) > 10
AND char_length(phone) < 11;
这不会导致结果,但如果我这样做
SELECT FirstName
, LastName
, Phone
, balance
FROM access_ayyaz_test.customers
WHERE balance > 0
AND phone != ''
AND char_length(phone) > 10;
或
SELECT FirstName
, LastName
, Phone
, balance
FROM customers
WHERE balance > 0
AND phone != ''
AND char_length(phone) < 11;
他们自己而不是一起给出结果。那我该怎么检查范围呢?
答案 0 :(得分:0)
第一个查询不会返回任何内容,因为没有任何内容可以匹配:
AND char_length(phone) > 10
AND char_length(phone) < 11;
尝试稍微改变你的范围:
SELECT FirstName
, LastName
, Phone
, balance
FROM customers
WHERE balance > 0
AND char_length(phone) >=10
AND char_length(phone) <=11
现在,您可以让人们拥有平衡和正确的电话号码长度。
答案 1 :(得分:0)
查询
SELECT FirstName
, LastName
, Phone
, balance
FROM access_ayyaz_test.customers
WHERE balance > 0
AND phone != ''
AND char_length(phone) > 10;
和
SELECT FirstName
, LastName
, Phone
, balance
FROM customers
WHERE balance > 0
AND phone != ''
AND char_length(phone) < 11;
正在检查长度大于10且小于11的电话号码的记录。让这些查询返回值并不会使条件char_length(phone) > 10 AND char_length(phone) < 11
成立。
可能会有记录显示电话号码的长度为12,13或14,这使得条件char_length(phone) > 10
为真,并返回满足该条件的记录。
同样,可能会有记录显示电话号码的长度小于11,并使条件char_length(phone) < 11
为真,并返回满足该条件的记录。
编辑:根据您的评论,如果您要查找电话号码长度介于10到12之间的记录,则不需要两个过滤器,例如
AND char_length(phone) > 10
AND char_length(phone) < 12
您可以简单地使用AND char_length(phone) = 11
。