用一个子串替换各个位置出现的另一个子串。
REPLACE ( , , ) 如果有某个参数为 NULL,此函数返回 NULL。
参数说明original-string被搜索的字符串。此字符串可以为任意长度。search-string将被搜索并以
LONG BINARY
LONG VARCHAR
LONG NVARCHAR
注意结果数据类型为 LONG VARCHAR。如果在 SELECT INTO 语句中使用 REPLACE,您必须具有“非结构化数据分析选项”许可证,或使用 CAST 并将 REPLACE 设置为正确的数据类型和大小。
REPLACE 函数的结果数据类型为 LONG VARCHAR。如果在 SELECT INTO 语句中使用 REPLACE,您必须具有“非结构化数据分析选项”许可证,或使用 CAST 并将 REPLACE 设置为正确的数据类型和大小。
如果所有参数的数据类型都为二进制数据类型,则 REPLACE 函数与 BYTE_REPLACE 函数的行为基本相同。
有两种方法可以解决这一问题:
INSERT: DECLARE local temporary table #mytable (name_column char(10)) on commit preserve rows;INSERT INTO #mytable SELECT REPLACE(name,'0','1') FROM dummy_table01;
SELECT CAST(replace(name, '0', '1') AS Char(10)) into #mytable from dummy_table01;
如果需要在< replace-string> 宽于
CREATE TABLE aa(a CHAR(5));
INSERT INTO aa VALUES(‘CCCCC’);
COMMIT;
SELECT a, CAST(REPLACE(a,’C’,’ZZ’) AS CHAR(5)) FROM aa;
以下语句返回值 "xx.def.xx.ghi":
SELECT REPLACE( 'abc.def.abc.ghi', 'abc', 'xx' ) FROM iq_dummy以下语句生成包含 ALTER PROCEDURE 语句的结果集,这些语句在执行时会修复那些引用已重命名的表的存储过程。(表名必须唯一才可进行使用。)
SELECT REPLACE(
replace(proc_defn,'OldTableName','NewTableName'),
'create procedure',
'alter procedure')
FROM SYS.SYSPROCEDURE
WHERE proc_defn LIKE '%OldTableName%'
对于 LIST 函数,使用逗号以外的分隔符:
SELECT REPLACE( list( table_id ), ',', '--')
FROM SYS.ISYSTAB
WHERE table_id <= 5