Это может звучать как дубликат, но существующие решения не работают.Мне нужно удалить все не буквенно-цифровые символы из поля varchar.Я использую следующее, но оно работает не во всех случаях (оно работает с символами алмазного знака вопроса):
select TRANSLATE(FIELDNAME, '?',
TRANSLATE(FIELDNAME , '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'))
from TABLENAME
Что он делает, так это внутренний перевод, анализирует все не алфавитно-цифровые символы, а затем внешнийперевести замените их все на «?».Это похоже на замену персонажа replacement.Тем не менее, он выдает The second, third or fourth argument of the TRANSLATE scalar function is incorrect.
, что ожидается в соответствии с IBM:
The TRANSLATE scalar function does not allow replacement of a character by another character which is encoded using a different number of bytes. The second and third arguments of the TRANSLATE scalar function must end with correctly formed characters
.
Есть ли способ обойти это?
Редактировать: решение @Paul Vernonпохоже работает:
· 6005308 ??6005308
–6009908 ?6009908
–6011177 ?6011177
��6011183�� ??6011183??