mysql - 如何在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是什么?谢谢
解决方案
做userid的长度,减去用nothing替换userid的点的长度
SELECT
userid,
LENGTH(userid) - LENGTH(REPLACE(userid, '.', '')) as count
FROM user
一般来说,对于这种技术,我们应该仔细考虑是使用 LENGTH 还是 CHAR_LENGTH,第一个计算组成字符串的字节数,第二个计算字符数。在这种情况下,这无关紧要,但如果您在字符由一个以上字节表示的 Unicode 字符串上使用此技术,则将来可能会
推荐阅读
- javascript - 按数据属性和父子关系对 li 排序
- mysql - 如何从 sqlx 获取最后插入的行的 id?
- path - 如何从扩展中可靠地获取 vscode 用户目录的路径?
- c# - C# 返回值 SHA256Managed 为 NULL
- angular - 如何生成自己的与 Angular 6+ AoT 兼容的惰性模块/块
- python - AttributeError:模块“tensorflow.contrib.seq2seq”没有属性“DynamicAttentionWrapperState”
- go - Seed 和 Rand.Seed 的区别
- vba - 在 Access VBA 中将秒转换为时分秒格式
- c - 如何使用函数从列表中删除字符串?
- c++ - 关于 C++ enable_if_t;为什么这段代码不起作用(gcc 8.1,Ubuntu)