我可以在 SQL 中的字段中选择不同/按字符分组吗?
我想运行一个查询,对于给定字段将计算特定字符的实例。
例如,如果我有一个名为“朋友”的表,其中“姓名”字段包含行:爱德华、詹姆斯、迈克。我会得到输出:
A 2, d 2, E 3, 我 1, 等等...
I'd like to run a query which for a given field will count the instances of a particular character.
For example if I had a table called 'Friends' with a 'Names' field containing rows: Edward, James, Mike. I'd get the output:
A 2,
D 2,
E 3,
I 1,
and so on...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一般的答案是,您需要将每个名称分成一个组成字符表,然后对它们进行计数。
您没有提及您正在使用哪种 RDBMS。答案因数据库引擎而异。
例如,这适用于 SQL 2005+:
但几乎肯定不适用于任何其他数据库引擎。
The generic answer is that you need to split each name into a table of constituent characters, then count those.
You don't mention which RDBMS you're using. The answer varies a bit by database engine.
For example, this will work on SQL 2005+:
But almost certainly won't work on any other database engines.
一种方法是使用临时表,并在 WHILE 循环中填充它:
另一种方法是在临时表中创建有效字符位置的列表,或者如本例所示,使用递归公用表表达式 (CTE):
I已针对此数据集测试了代码示例:
One way is to use a temporary table, and populate it in a WHILE loop:
Another way is to create a list of valid character positions in a temporary table, or as in this example, with a recursive common table expression (CTE):
I've tested the code samples against this dataset: