Как я могу заменить диакритические знаки обычными символами в DB2?
Например: ëèé
становится eee
edit: я мог бы использовать функцию REPLACE
в своей функции, но я не хочу использовать ВСЕ возможности, потому что мне это кажется бесконечным.
Как я могу заменить диакритические знаки обычными символами в DB2?
Например: ëèé
становится eee
edit: я мог бы использовать функцию REPLACE
в своей функции, но я не хочу использовать ВСЕ возможности, потому что мне это кажется бесконечным.
CAST(c_uni AS VARCHAR(10) CCSID ASCII)
? 17.07.2014 select CAST(d.someValue AS VARCHAR(10) CCSID ASCII) FROM DOSSIER d
и у меня получилось: The clause "CCSID ASCII" is invalid for this database. SQL Code: -622, SQL State: 56031
17.07.2014 Одна идея состоит в том, чтобы написать функцию Java, например: http://www.drillio.com/en/software-development/java/removing-accents-diacritics-in-any-language/
public static String removeAccents(String text) {
return text == null ? null
: Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Теперь вы можете зарегистрировать эту функцию в DB2 и использовать ее из sql. См. sqlj.install_jar в документации по db2.
Утилиты для этой замены нет, потому что это не что-то общее, а очень конкретный случай.
Например, во французском языке: çàéèùêô€œ
На испанском мы имеем: áéíóúñüÑ
Немецкий и датский языки имеют разные символы.
Даже в некоторых английских словах есть иностранные символы: façade.
Как вы собираетесь их переводить? Даже если это кажется бесконечным, вы должны предоставить собственную замену. Во-первых, вам нужно создать список соответствия для языка, который вы собираетесь переводить, а затем создать этот бесконечный список.
Кстати, а почему вы хотите их перевести? Любое хорошее приложение поддерживает Unicode, только старые или плохие приложения не поддерживают Unicode правильно.
Наконец, вы можете создать более гибкий метод для изменения символов, если используете регулярное выражение. А в DB2 их можно использовать с xQuery.