我在PHP中创建了一个脚本,基本上将带有名字的CSV(外部生成)上传到MySQL数据库,然后处理每一行以确定名字是男性还是女性使用外部API。相同的字符串比较不工作mysql
一旦它评估了每一行(名称),它就将名称存储在辅助表(存在名称或缺失取决于结果)上。
为了避免浪费我的API请求并使我的进程更快,每当上传CSV时,都会运行以下查询以确定表中是否存在名称。
SELECT DISTINCT nl.name
FROM namelist nl
LEFT JOIN (
SELECT name
FROM missing
UNION
SELECT name
FROM existing_names
) en ON en.name = nl.name
WHERE en.name IS NULL
从这个查询中我得到了一组新行,这些新行将在API的帮助下进行评估。
我的数据库和我所有的表都有这个值作为排序规则:utf8_unicode_ci,但我得到奇怪的结果,因为名称如“LUIGI”在两个表中都有不同的长度:名称列表中的'8'和现有的'7'。
因此,上面的查询返回大量已经评估过的名称。
有两个问题: 1.在这种情况下,我应该如何构建查询来标准化排序规则? 2.我应该将哪些代码添加到我的PHP脚本中,以避免使用不同排序规则填充字符串?
谢谢你的时间。
我不知道你的问题的答案,但出于兴趣,你将如何处理像“查理”,“杰米”,“杰西”,“河”等男女皆宜的名字?如何用一种语言表示男性,而另一种语言表示女性(例如“Jean”)?尽管我不知道你的系统是做什么的,它是否需要并且能够巧妙地与变性人用户打交道? –
@MattRaines我将它用于拉丁美洲的名字,至少在西班牙语中,只有几个名字可以是男女皆宜的,大部分时间由两个名字组成,其中第一个名字定义了性别。 (恩。“Jose Maria”,“Jose Guadalupe”)至少在这个项目中,性别将仅用于分析目的,我们不会用它来向用户发送任何通信。 – miguelvalenciav