在mysql中将查询结果强制转换为十进制
我所拥有的:在mysql中将查询结果强制转换为十进制,mysql,mariadb,Mysql,Mariadb,我所拥有的: SELECT userid, CAST((( SELECT COUNT(NULLIF(TRIM(ref_url), '')) FROM visits LIMIT 0,100 ) * 0.5) AS DECIMAL(12,2)) AS 'estimated value' FROM visits GROUP BY userid Mariadb
SELECT userid,
CAST(((
SELECT COUNT(NULLIF(TRIM(ref_url), ''))
FROM visits
LIMIT 0,100
) * 0.5) AS DECIMAL(12,2)) AS 'estimated value'
FROM visits
GROUP BY userid
- Mariadb版本:10.3.10
visions
,它有两列userid
和ref\u url
,其中userid
是用户的id,ref\u url
对应于引用userid
的url。ref\u url
列中的空格对应于直接访问,不予以考虑
表:vists
-------------------------------------
| userid | ref_url |
-------------------------------------
| 1 | |
| 1 | https://demosite.com |
| 1 | https://demosite2.com |
| 1 | |
| 1 | https://demosite3.com |
| 1 | |
-------------------------------------
我期望达到的目标:
SELECT userid,
CAST(((
SELECT COUNT(NULLIF(TRIM(ref_url), ''))
FROM visits
LIMIT 0,100
) * 0.5) AS DECIMAL(12,2)) AS 'estimated value'
FROM visits
GROUP BY userid
我想创建一个查询,计算特定userid
出现的ref\u url
总数,不包括空格(在ref\u url字段中),将计数限制在100以内,将计数乘以0.5,并在别名列估计值上以十进制表示结果
------------------------------------
| userid | estimated value |
------------------------------------
| 1 | 1.50 |
------------------------------------
我的查询:
SELECT userid,
CAST(((
SELECT COUNT(NULLIF(TRIM(ref_url), ''))
FROM visits
LIMIT 0,100
) * 0.5) AS DECIMAL(12,2)) AS 'estimated value'
FROM visits
GROUP BY userid
上述查询引发语法错误:
您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“2”)附近使用的正确语法
当十进制(12,2)
被无符号
替换时,查询工作
与十进制(12,2)一起使用时,查询将与Adminer一起输出,但结果为
[1329]无数据-获取、选择或处理的行数为零
当直接在Mariadb上试用时。是否有可能出现权限问题?限制在收集数据后发生。子查询只收集一行,因此限制
是不相关的。但是,由于您使用的是MariaDB(不是MySQL),您可以说
LIMIT ROWS EXAMINED 100
(注意:我还没有测试过这个。)
参考:自5.5.21起
对于DECIMAL
——使用
FORMAT(expression, 2)
我不能重现你的问题,至少不能重现我在本地尝试的问题。你当前的DB版本是什么?顺便说一句,你能用float(12,2)试试吗?这个查询在我的MariaDB版本10.0.36-MariaDB-0ubuntu0.16.04.1中运行良好。你用哪一种?对我来说很好:@Christian Felix我试过浮动,结果一样。令人惊讶的是,查询与adminer一起输出,但当直接在MariadbFORMAT上执行时,不会出现数据获取错误!!那么,我想知道为什么FORMAT会这么做,而CAST却没有?是因为嵌套查询吗?还有一件事,我认为FORMAT返回的结果是字符串值而不是数字,对吗?@mesumosu-我还没有弄清楚它为什么出错<代码>格式
,顾名思义,是一个格式化函数,因此返回一个字符串。(它还增加了大量的“数千个分隔符”。@mesumosu-显示“div_precision_increment”等变量代码>