2
我需要對錶的行進行計數,然後對結果進行子串處理。爲了得到我需要什麼,我想這一點:MySQL的子計數(1)錯誤
SELECT substring(count(1),1,1) FROM users
下面的查詢返回85
:
SELECT count(1) FROM users
第一個查詢返回38
當期望值爲8
。這是爲什麼發生?
我需要對錶的行進行計數,然後對結果進行子串處理。爲了得到我需要什麼,我想這一點:MySQL的子計數(1)錯誤
SELECT substring(count(1),1,1) FROM users
下面的查詢返回85
:
SELECT count(1) FROM users
第一個查詢返回38
當期望值爲8
。這是爲什麼發生?
應該
SELECT substring(cast(count(1) as char), 1, 1) FROM users
爲什麼它發生是因爲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== |
但如果我投結果爲char,我得到正確結果:
select cast(substring(count(1),1,1) as char) from users;
| cast(substring(count(1),1,1) as char) |
|---------------------------------------|
| 8 |
如果I ca 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 |
根據你的sql查詢,應該是'8'。你是否在程序中通過db連接或者某些mysql工具執行這個查詢? – Acepcs
我使用phpMyAdmin SQL選項執行了查詢 – cespon