Sql 获取包含MS Access中类似条目的字段计数
嘿,我正在尝试解析access数据库中的任何重复项。我希望数据库对access文盲可用,因此我尝试设置可以在不了解程序的情况下运行的查询 我的数据库是在名称字段中的条目偶尔附加特殊字符的情况下设置的。我感兴趣的是根据字段field1和name检查重复条目。我如何将带有特殊字符的条目的计数与其非特殊字符对应项包括在内?这是在单个步骤中实现的,还是需要添加一个先清理数据的步骤 当前我的代码(如下所示)只返回不包含特殊字符的条目的计数Sql 获取包含MS Access中类似条目的字段计数,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,嘿,我正在尝试解析access数据库中的任何重复项。我希望数据库对access文盲可用,因此我尝试设置可以在不了解程序的情况下运行的查询 我的数据库是在名称字段中的条目偶尔附加特殊字符的情况下设置的。我感兴趣的是根据字段field1和name检查重复条目。我如何将带有特殊字符的条目的计数与其非特殊字符对应项包括在内?这是在单个步骤中实现的,还是需要添加一个先清理数据的步骤 当前我的代码(如下所示)只返回不包含特殊字符的条目的计数 SELECT table.[field1],
SELECT
table.[field1],
table.[Name],
Count(table.[Name]) AS [CountOfName]
FROM
table
GROUP BY
table.[field1],
table.[Name]
HAVING
(((table.[Name]) Like "*") AND ((Count(table.[Name]))>1));
我曾尝试在Like语句中添加前导空格(如“*”),但结果为零
p.S。我还尝试了Replace语句来替换特殊字符,但没有成功
字段1##
- 1234567
- 1234567
- 4567890
- 4567890
- 布莱恩
- 布莱恩
- 特德
- 特德"
字段1 1234567 名字 布莱恩 姓名
2
分组依据
的工作原理是将行放入值相同的组中。因此,当您按field1
和name
对数据和it组运行查询时,您的意思是“将这些记录放入组中,它们共享一个公共字段1和名称值”。如果您希望4567890,ted
和4567890,ted†
显示在同一组中,因此计数为2,则字段1和名称必须相同
如果名称末尾只有一个或两个可能的特殊字符,则可以使用Replace()
或Substring()
删除名称末尾的所有特殊字符,但请记住,还必须GROUP BY
创建的新表达式;您不能按原始名称字段进行分组,否则将无法获得所需的计数。您还可以创建另一列,该列包含经过净化的名称,该名称的末尾没有任何特殊字符
我没有安装Access,但类似这样的东西应该可以:
SELECT
table.[field1],
Replace(table.[Name], "†", "") AS Name,
Count(table.[Name]) AS [CountOfName]
FROM
table
GROUP BY
table.[field1],
Replace(table.[Name], "†", "")
请出示一些样品数据好吗?顺便说一句,*
是Access中的通配符项,因此*可以是*或Paul
或任何您想要的
或12358
或1989年8月17日
或http://www.google.co.uk
ted条目的结果不被统计。正如我在最初的帖子中所说的,我以前尝试过替换功能。当删除单个字符时,它似乎有效,但当我尝试处理所有三个字符时(†,——25;,^)则无效。您需要嵌套replace()。请务必将其放入您的选择
和您的分组依据
。再说一次,我只是随意处理SQL,因为我没有可用的Access安装,但这应该可以工作。根据你需要做的替换量,你可能想考虑在另一列中保存一个消毒名称并分组。AHHHHH嵌套是我丢失的,甚至不知道。哇,我只是在兜圈子浪费了很多时间。谢谢你的帮助。@udderlya不客气,很高兴你能解决这个问题。