我想从用户的名字和姓氏中生成严格的字母数字字符登录。由于他们中的许多人都是外国人,他们的名字有特殊字符(é,è,ï,...)。我想删除登录中的重音符号(e,e,i,...)。
这是我的查询。是否有不包含重音的字符集?
UPDATE contacts SET login=CONVERT(LOWER(CONCAT(firstname,'.',lastname)) USING utf8);
答案 0 :(得分:5)
那么,作为一名法国计算机科学家(以他的名字加上口音),我强烈反对这种转变。
为什么,因为这个策略只是用另一个错误的假设取代错误的假设。让我解释一下自己:
我们可以看到只有us-ascii在登录ID中被允许作为一个错误的假设,“所有用户名都可以在ascii中写”。
尝试从用户名称中删除重音仅仅是将所有用户名转换替换为ascii“。
这也是不正确的:它对我有用(作为欧洲 - 拉丁语1证明的人),但你如何计算三岛的名字?或者是Сахаров?
我知道我的回答是非技术性的,但你应该做任何必要的事情来允许登录中的非ascii字符。或者,您应该允许您的用户选择此登录。
答案 1 :(得分:4)
以下是我的重音标记规范化解决方案:
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
acc_tag,
'ù','u'),'ú','u'),'û','u'),'ü','u'),'ý','y'),'ë','e'),'à','a'),'á','a'),'â','a'),'ã','a'),
'ä','a'),'å','a'),'æ','a'),'ç','c'),'è','e'),'é','e'),'ê','e'),'ë','e'),'ì','i'),'í','i'),
'î','i'),'ï','i'),'ð','o'),'ñ','n'),'ò','o'),'ó','o'),'ô','o'),'õ','o'),'ö','o'),'ø','o') AS normal_tag