Oracle Translate & Replace Functions
Version 26ai

General Information
Library Note Morgan's Library Page Header
The best Oracle News for FY2026

Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
Purpose TRANSLATE and REPLACE are very similar in their appearance but can produce very different results. Translate replaces by position, the first character of the list to match is replaced by the first character of the replacement list. The second character with the second, and if there are characters in the list to match that do not have positional equivalents in the replacements list they are dropped.

Replace replaces the string to match with the replacement string. The replacement of a single character is the same as that of TRANSLATE.
 
TRANSLATE
Single character replacement that  replaces all commas with vertical bars TRANSLATE(
str1   IN VARCHAR2 CHARACTER SET ANY_CS,
src    IN VARCHAR2 CHARACTER SET STR1%CHARSET,
dest   IN VARCHAR2 CHARACTER SET STR1%CHARSET)
RETURN IN VARCHAR2 CHARACTER SET STR1%CHARSET;
SELECT translate ('comma,delimited,list', ',', '| ')
FROM dual;
Multiple Character Replacement
Turns a DNA sequence into its complement
SELECT TRANSLATE('CAG-TTT-GAC-ACA-TGG-ATC', 'ACGT ', 'GATC') DNA;
Character Replacement and Elimination. The 'a' is replaced with an 'e', the 'h' has no complement and is dropped. SELECT translate('So What', 'ah', 'e');
Eliminating Double Quotes. Capital A is replaced with capital A. The double quote is eliminated because there is no match. SELECT translate('"Darn double quotes "', 'A"', 'A');
Simple encryption and decryption SELECT translate('this is a secret',
'abcdefghijklmnopqrstuvxyz', '0123456789qwertyuiop[kjhbv');

SELECT TRANSLATE('p78o 8o 0 o42i4p',
'0123456789qwertyuiop[kjhbv', 'abcdefghijklmnopqrstuvxyz');
Counting vowels WITH data AS (SELECT 'Whose line is it anyway' line FROM dual)
SELECT length(line) - length(translate(line,'xaeiou','x')) nbVowels
FROM data;
 
REPLACE
VARCHAR2 demonstrating single character replacement

Overload 1
-- REPLACE(<string>, <'string_to_match'>,<'replacements_string'>)

REPLACE(
srcstr IN VARCHAR2 CHARACTER SET ANY_CS,
oldsub IN VARCHAR2 CHARACTER SET SRCSTR%CHARSET,
newsub IN VARCHAR2 CHARACTER SET SRCSTR%CHARSET := NULL)
RETURN VARCHAR2 CHARACTER SET SRCSTR%CHARSET;
conn uwclass/uwclass@pdbdev

SELECT REPLACE('So What', 'o', 'ay') FROM dual;
CLOB demonstrating multiple character replacement

Overload 2
REPLACE(<string>, <'string_to_match'>,<'replacements_string'>)

REPLACE(
srcstr IN CLOB CHARACTER SET ANY_CS,
oldsub IN CLOB CHARACTER SET SRCSTR%CHARSET,
newsub IN CLOB CHARACTER SET SRCSTR%CHARSET := NULL)
RETURN IN CLOB CHARACTER SET SRCSTR%CHARSET;
conn uwclass/uwclass@pdbdev

CREATE TABLE reptest (
truth CLOB);

INSERT INTO reptest VALUES ('An idea that is not dangerous is unworthy of being called an idea at all.');
COMMIT;

SELECT * FROM reptest;

SELECT REPLACE(truth, 'n idea', ' software program') TRUTH
FROM reptest;

Related Topics
Built-in Functions
REGEXP_REPLACE
String Functions
What's New In 21c
What's New In 26ai

Morgan's Library Page Footer
This site is maintained by Daniel Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2026 Daniel A. Morgan All Rights Reserved