MySQL子字符串计数(1)错误
我需要计算表的行数,然后对结果进行子串。为了得到我需要的,我尝试了以下方法:MySQL子字符串计数(1)错误,mysql,count,substring,Mysql,Count,Substring,我需要计算表的行数,然后对结果进行子串。为了得到我需要的,我尝试了以下方法: SELECT substring(count(1),1,1) FROM users 以下查询返回85: SELECT count(1) FROM users 当预期值为8时,第一个查询返回38。为什么会发生这种情况?应该是 SELECT substring(cast(count(1) as char), 1, 1) FROM users 之所以会发生这种情况,是因为子字符串的结果被隐式转换为二进制(我没有得到3
SELECT substring(count(1),1,1) FROM users
以下查询返回85
:
SELECT count(1) FROM users
当预期值为8
时,第一个查询返回38
。为什么会发生这种情况?应该是
SELECT substring(cast(count(1) as char), 1, 1) FROM users
之所以会发生这种情况,是因为
子字符串
的结果被隐式转换为二进制
(我没有得到38,可能是因为不同的字符集)
如果我使用与您相同的方法:
select substring(count(1),1,1) from users;
| substring(count(1),1,1) |
|-------------------------|
| OA== |
与我将结果强制转换为二进制相同:
select cast(substring(count(1),1,1) as binary) from users;
| cast(substring(count(1),1,1) as binary) |
|-----------------------------------------|
| OA== |
但如果将结果强制转换为char,则得到正确的结果:
select cast(substring(count(1),1,1) as char) from users;
| cast(substring(count(1),1,1) as char) |
|---------------------------------------|
| 8 |
如果将计数(1)强制转换为字符,则相同:
根据sql查询,它应该是
8
。您是通过db connect还是在某些mysql工具中在程序中执行此查询?我使用phpMyAdmin SQL选项执行查询
select cast(substring(count(1),1,1) as char) from users;
| cast(substring(count(1),1,1) as char) |
|---------------------------------------|
| 8 |
select substring(cast(count(1) as char),1,1) from users;
| substring(cast(count(1) as char),1,1) |
|---------------------------------------|
| 8 |