Mysql字符映射

时间:2010-04-07 07:22:19

标签: mysql character-encoding

我想将外来字符,尤其是土耳其字符映射到Mysql中的Latin-1等效字符。

例如,

Select name FROM users WHERE id = 1

结果=Çakır

但我希望得到它:

Cakir的

Özel - >本页Özel

有几个土耳其字符,它们都有Latin-1等价物。 (http://webdesign.about.com/od/localization/l/blhtmlcodes-tr.htm

如何使用SQL查询在Mysql中执行此操作?我也可以使用手动映射,因为这个查询将在一天内运行几次,所以此时性能影响并不重要。

提前致谢,

1 个答案:

答案 0 :(得分:0)

  

如何使用SQL查询在Mysql中执行此操作?

如果您只需要定位土耳其语中常用的几个字符,那么您可以使用(可怕的)字符串替换:

SELECT
    REPLACE(REPLACE(
        REPLACE(REPLACE(
            REPLACE(REPLACE(
                REPLACE(REPLACE(
                    REPLACE(REPLACE(
                        REPLACE(REPLACE(
                            name,
                        'İ', 'I'), 'ı' 'i'),
                    'Ö', 'O'), 'ö', 'o'),
                'Ü', 'U'), 'ü', 'u'),
            'Ç', 'C'), 'ç', 'c'),
        'Ğ', 'G'), 'ğ', 'g'),
    'Ş', 'S'), 'ş', 's')
    AS name
FROM users
WHERE id=1

如果你愿意,你可以把它放在一个存储过程中,但实际上你可能最好用数据库之外的正确编程(脚本)语言来做这件事。你会得到更好的字符串替换/翻译工具和更通用的解决方案。

例如,使用Unicode规范化删除变音符号相当容易。音译通常是一项棘手的,可能是语言特定的任务,对于数据库层来说可能太难了。