数据清理,从ALLCAPS转换为标题案例

时间:2010-07-13 19:49:24

标签: sql text grep

将人员和地址数据库从ALL CAPS转换为Title Case将创建一些不正确大写的单词/名称,其中一些示例如下:

MacDonald,PhD,CPA,III

有没有人知道现有的脚本会清除所有常见的问题单词?当然,它仍然会留下一些错误(不太常见的名字与CamelCase一样的拼写,即“MacDonalz”)。

我认为这不重要,但数据目前存在于MSSQL中。由于这是一次性工作,如果解决方案需要,我会导出到文本。

有一个帖子提出了一个相关的问题,有时会触及这个问题,但没有具体解决这个问题。你可以在这里看到它:

SQL Server: Make all UPPER case to Proper Case/Title Case

2 个答案:

答案 0 :(得分:2)

不知道这是否有任何帮助

private static function ucNames($surname) {
//  ( O\' | \- | Ma?c | Fitz )  # attempt to match Irish, Scottish and double-barrelled surnames
    $replaceValue = ucwords($surname);
    return preg_replace('/
                        (?: ^ | \\b )       # assertion: beginning of string or a word boundary
                        ( O\' | \- | Ma?c | Fitz )  # attempt to match Irish, Scottish and double-barrelled surnames
                        ( [^\W\d_] )        # match next char; we exclude digits and _ from \w
                        /xe',
                        "'\$1' . strtoupper('\$2')",
                        $replaceValue);
}

这是一个简单的PHP函数,我用来设置姓氏来纠正适用于O'Connor,McDonald和MacBeth,FitzPatrick以及像Hedley-Smythe这样的双管名称的名称的案例

答案 1 :(得分:0)

以下是我要找的答案:

有一家数据公司Melissa Data发布了一些用于数据库清理的API和应用程序 - 主要针对直销行业。

我能够使用两个应用程序来解决我的问题。

  1. StyleList:这个应用程序,其中包括 事情,将所有CAPS转换为混合 案件和过程中没有 弄脏数据,留下标题 如CPA,MD,III等; 以及自然,共同 像麦当劳这样的骆驼案名。
  2. Personator:我使用了personator将Full Name字段分为Prefix,First Name,Middle Name,Last Name和Suffix。说实话,它远非完美,但我给它的数据非常具有挑战性(通常没有空格分隔中间名和后缀)。此应用程序还可以执行许多其他用途,包括为大多数名称指定性别。它也可以作为API使用。
  3. 以下是Melissa Data提供的解决方案的链接:

    http://www.melissadata.com/dqt/index.htm

    对我来说,Melissa Data应用程序完成了大量繁重工作,剩下的脏数据可通过报告LEFT x或RIGHT x计数在SQL中识别和修复 - 污垢通常具有最少的唯一性,易于发现的模式和固定的。