我有这个问题:
SELECT DISTINCT phone, department
FROM `users`
WHERE ((SUBSTRING(phone,1,3) = '399')
AND (SUBSTRING(phone,5,4) BETWEEN '3400' AND '3499')
OR (SUBSTRING(phone,1,3) = '244')
AND (SUBSTRING (phone,5,4) BETWEEN '5400' AND '5499'))
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
#1630 - FUNCTION Database.SUBSTRING does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
如果我只使用此查询,则查询有效:
SELECT DISTINCT phone, department
FROM `users`
WHERE (SUBSTRING(phone,1,3) = '399')
AND (SUBSTRING(phone,5,4) BETWEEN '3400' AND '3499')
Run Code Online (Sandbox Code Playgroud)
根据MySQL 函数名称解析,内置函数名称(在您的情况下为"SUBSTRING")和下面的"("括号字符)之间不能有空格.这是一种默认的解析器行为,用于区分内置函数的名称函数被用作函数调用或非映射上下文中的标识符.
因此,如果您在最后一行的'SUBSTRING'函数调用后删除空格,您的查询将正常工作:
SELECT DISTINCT phone, department
FROM `users`
WHERE ((SUBSTRING(phone,1,3) = '399')
AND (SUBSTRING(phone,5,4) BETWEEN '3400' AND '3499')
OR (SUBSTRING(phone,1,3) = '244')
AND (SUBSTRING(phone,5,4) BETWEEN '5400' AND '5499'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16707 次 |
| 最近记录: |