我以前从未构建过匹配算法,也不知道从哪里开始.所以这是我的基本设置以及我为什么这样做.如果我没有问正确的问题,请随意纠正我.
我有一个人名的名字和唯一标识符的数据库.几个生成的标识符(内部生成的和一些第三方),姓氏,名字和出生日期是我将使用的主要标识符.
我全年多次收到第三方列表,该列表需要导入并绑定到我数据库中的现有人员,但数据从未像我的一样干净.ID可能会更改,出生日期可能会出现拼写错误,姓名可能会出现拼写错误,姓氏可能会更改,等等.
每次导入都可能有20,000条记录,所以即使它准确率为99%,仍然需要200条记录,我必须手动进行匹配.我认为在将传入的人员与我的用户进行匹配时,我正在寻找更高达99.9%的准确率.
那么,我该如何制作一个可以解决这个问题的算法呢?
PS即使您没有确切的答案,但知道一些材料可供参考也会有所帮助.
PPS一些例子与m3rLinEz写的类似:
ID: 9876234 Fname: Jose LName: Guitierrez Birthdate:01/20/84 '- Original'
ID: 9876234 Fname: Jose LName: Guitierrez Birthdate:10/20/84 '- Typo in birth date'
ID: 0876234 Fname: Jose LName: Guitierrez Birthdate:01/20/84 '- Wrong ID'
ID: 9876234 Fname: Jose LName: Guitierrez-Brown Birthdate:01/20/84 '- Hyphenated last name'
ID: 9876234 Fname: Jose, A. LName: Guitierrez Birthdate:01/20/84 '- Added middle initial'
ID: 3453555 Fname: Joseph LName: Guitierrez Birthdate:01/20/84 '- Probably someone else with same birthdate and same last name'
Run Code Online (Sandbox Code Playgroud) 我有一个我正在处理的查询,我想增加其中一个字段,并在键值不同时重新启动计数器.
我知道这段代码不起作用.以编程方式这是我想要的......
declare @counter int, @id
set @counter = 0
set @id = 0
select distinct
id,
counter = when id = @id
then @counter += 1
else @id = id
@counter = 1
Run Code Online (Sandbox Code Playgroud)
...最终结果看起来像这样:
ID Counter
3 1
3 2
3 3
3 4
6 1
6 2
6 3
7 1
Run Code Online (Sandbox Code Playgroud)
是的,我被SQL2k困住了.否则row_number()会起作用.
我想使用子报告,因为它在标题中的许多报告中使用.但是,子报告不会进入标题,也不会显示字段值.虽然,参数会很好.
有关如何绕过这个的任何建议或参考?
我有一个jQuery脚本,可以选择所有带有'Phone'的ID.但是,我有一小部分,如果他们在课堂上,则不需要选择它们.
根据我理解的方式,我拥有的是:
$("[id*='Phone']:not('referencePhones')").doSomething();
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
.referencePhones是一个父类.即:
div class="referencePhones"
span id="Phone"
Run Code Online (Sandbox Code Playgroud) 得到我想要的东西似乎很简单.数据详细信息显示正确,但我无法让标题合作.
我有很多客户在报告中有他们的活动.我想在标题中的客户端名称,然后在下面的列名称.但我要么在每个条目之前重复列,要么没有客户名称.
这就是我希望报告看起来像:
**Client # 1**
Col1 Col2 Col3
data data data
data data data
**Client # 2**
Col1 Col2 Col3
data data data
data data data
**Client # n**
Col1 Col2 Col3
data data data
data data data
Run Code Online (Sandbox Code Playgroud)
不幸的是我得到的是:
**Client # 1**
Col1 Col2 Col3
data data data
Col1 Col2 Col3
data data data
Col1 Col2 Col3
data data data
Col1 Col2 Col3
data data data
Run Code Online (Sandbox Code Playgroud)
或这个:
Col1 Col2 Col3
**Client # 1**
data data data
data data data
Run Code Online (Sandbox Code Playgroud) 几天前我问了一个关于通过运行SELECT将数据移动到另一台服务器来创建INSERT的问题.这很有效,直到我遇到一个完整的HTML和撇号表.处理这个问题的最佳方法是什么?幸运的是没有太多的行,所以作为"复制和粘贴"的最后手段是可行的.但是,最终我需要这样做,那时候表格可能太大了,无法复制和粘贴这些HTML字段.
这就是我现在拥有的:
select 'Insert into userwidget ([Type],[UserName],[Title],[Description],[Data],[HtmlOutput],[DisplayOrder],[RealTime],[SubDisplayOrder]) VALUES ('
+ ISNULL('N'''+Convert(varchar(8000),Type)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Username)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Title)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Description)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),Data)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),HTMLOutput)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),DisplayOrder)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),RealTime)+'''','NULL') + ','
+ ISNULL('N'''+Convert(varchar(8000),SubDisplayOrder)+'''','NULL') + ')'
from userwidget
Run Code Online (Sandbox Code Playgroud)
除了HTMLOutput字段中那些讨厌的撇号之外,哪个工作正常.我可以通过在撇号上加倍查询来逃避它们,还是有一种编码字段结果的方法,这样无关紧要?
我以为我弄明白了,但事实证明我只是删除了第一张唱片.以下内容返回重复的行.所有都有2.我只想删除每个重复记录的第一个.
select scorestudentid, scoreadvisor, scorecorrect, count(*)
from scores
where scoretestid = 3284
group by scorestudentid, scoreadvisor, scorecorrect
having count(scorestudentid) > 1
Run Code Online (Sandbox Code Playgroud)
哪个回报:
scorestudentid scoreadvisor scorecorrect no column name
13033719 28059 3.0 2
13033777 28086 3.0 2
13033826 28147 3.0 2
13033960 28023 3.0 2
Run Code Online (Sandbox Code Playgroud)
所以我把它放在一起认为它会起作用:
set rowcount 1
delete
from scores
where scoretestid = 3284
and scorestudentid in (
select scorestudentid
from scores
where scoretestid = 3284
group by scorestudentid
having count(scorestudentid) > 1)
Run Code Online (Sandbox Code Playgroud)
它看起来应该是一个简单的概念,但我没有得到它.
基于托马斯脚本我更新了查询以适应但它仍然无法正常工作.
Delete Scores
Where Exists …
Run Code Online (Sandbox Code Playgroud)