我在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