2016-12-27 2 views
2

Мне нужно подсчитать строки таблицы, а затем подстроить результат. Для того, чтобы получить то, что мне нужно, я попытался это:MySQL подстрока счетчика (1) error

SELECT substring(count(1),1,1) FROM users 

Следующий запрос возвращает 85:

SELECT count(1) FROM users 

Первый запрос возвращает 38, когда ожидаемое значение 8. Почему это происходит?

+0

Согласно вашему запросу sql, это должно быть '8'. Выполняете ли вы этот запрос в своей программе через db connect или в некоторых инструментах mysql? – Acepcs

+0

Я выполнил запросы с помощью опции phpMyAdmin SQL – cespon

ответ

1

Должен быть

SELECT substring(cast(count(1) as char), 1, 1) FROM users 
1

Почему это происходит потому, что результат substring является неявным брошен как binary (я не получил 38, возможно, из-за разную кодировку).

select count(1) from users; 

| count(1) | 
|----------| 
|  85 | 

Если я использую тот же метод, как вы:

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== | 

Но если я бросаю результат, как полукокса, я получаю правильный результат:

select cast(substring(count(1),1,1) as char) from users; 

| cast(substring(count(1),1,1) as char) | 
|---------------------------------------| 
|          8 | 

такое же, если я st count (1) as char:

select substring(cast(count(1) as char),1,1) from users; 

| substring(cast(count(1) as char),1,1) | 
|---------------------------------------| 
|          8 | 
Смежные вопросы