首页 > 解决方案 > 如何在MYSQL中从一行中计算点

问题描述

从用户中选择用户标识;

+---------+
| userid  |
+---------+
| .1.     |
| .1.1.   |
| .1.2.   |
| .1.2.1. |
+---------+

我想要这样的结果:

+---------+-------+
| userid  | count |
+---------+-------+
| .1.     | 2     |
| .1.1.   | 3     |
| .1.2.   | 3     |
| .1.2.1. | 4     |
+---------+-------+

计数字段是关于一行中有多少个点

那个sql是什么?谢谢

标签: mysql

解决方案


做userid的长度,减去用nothing替换userid的点的长度

SELECT
  userid, 
  LENGTH(userid) - LENGTH(REPLACE(userid, '.', '')) as count 
FROM user

一般来说,对于这种技术,我们应该仔细考虑是使用 LENGTH 还是 CHAR_LENGTH,第一个计算组成字符串的字节数,第二个计算字符数。在这种情况下,这无关紧要,但如果您在字符由一个以上字节表示的 Unicode 字符串上使用此技术,则将来可能会


推荐阅读