Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL子字符串计数(1)错误_Mysql_Count_Substring - Fatal编程技术网

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 |