﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Teradata Forums / Teradata  / Teradata Database  / String Replacement / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Teradata Forums</description><link>http://www.teradata.com/teradataforum/</link><webMaster>info@teradata.com</webMaster><lastBuildDate>Wed, 03 Dec 2008 15:40:15 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Hi Daniel&lt;br&gt;&lt;br&gt;Thanks for this stored procedure. But is there is a way that I can use this in Select statement ?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards&lt;br&gt;</description><pubDate>Mon, 09 Jan 2006 11:26:14 GMT</pubDate><dc:creator>Akhil</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>The following stored procedure performs the task of a Replace function for character data.&lt;br&gt;In this form it can be used only from within another stored procedure.&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;br&gt;REPLACE PROCEDURE SysDBA.StringReplace&lt;br&gt;  (&lt;br&gt;    IN  TargetString  VARCHAR(30000) -- 33998&lt;br&gt;  , IN  SearchString  VARCHAR(255)&lt;br&gt;  , IN  ReplaceString VARCHAR(255)&lt;br&gt;  , OUT OutString     VARCHAR(30000)&lt;br&gt;  )&lt;br&gt;-----------------------------------------------------------------&lt;br&gt;-- INSTALL REQUIREMENTS:&lt;br&gt;--  1) GRANT ALL ON "%TDUser%" TO "%TDUser%" WITH GRANT OPTION&lt;br&gt;--  2) C++ compiler, if running the TD Demo&lt;br&gt;-- HOW TO INSTALL:&lt;br&gt;--  1) Logon to teradata using the %TDUser% login&lt;br&gt;--  2) Run the "REPLACE PROCEDURE" SQL statement&lt;br&gt;-----------------------------------------------------------------&lt;br&gt;-- NAME       : StringReplace&lt;br&gt;-- DESCRIPTION: Collects statistics on both primary and secondary&lt;br&gt;--  indices, and on columns.&lt;br&gt;-- PARAMETERS :&lt;br&gt;--    1) TargetString &lt;br&gt;--    2) SearchString &lt;br&gt;--    3) ReplaceString&lt;br&gt;-- REMARKS    : Can only be used from another Stored Procedure&lt;br&gt;-- EXAMPLES   :&lt;br&gt;--&lt;br&gt;--    DECLARE outStr VARCHAR(33998);&lt;br&gt;--    CALL testload.Replace('Hello, old world!', 'old ', '', OutString)&lt;br&gt;--&lt;br&gt;--  and get the output in the OutString variable:&lt;br&gt;--&lt;br&gt;--    outStr = 'Hello, world!'&lt;br&gt;--&lt;br&gt;-----------------------------------------------------------------&lt;br&gt;BEGIN&lt;br&gt;&lt;br&gt;  DECLARE sOutString     VARCHAR(30000);&lt;br&gt;  DECLARE sTmpSearchStr  VARCHAR(30000);&lt;br&gt;  DECLARE iTargetStrLen  INTEGER;&lt;br&gt;  DECLARE iSearchStrLen  INTEGER;&lt;br&gt;  DECLARE iSearchIndex   INTEGER;&lt;br&gt;&lt;br&gt;  SET sOutString = '';&lt;br&gt;  SET iTargetStrLen = CHAR_LENGTH( TargetString );&lt;br&gt;  SET iSearchStrLen = CHAR_LENGTH( SearchString );&lt;br&gt;&lt;br&gt;  IF (iSearchStrLen &lt;= 0) THEN&lt;br&gt;    SET OutString = TargetString;&lt;br&gt;  ELSEIF (iTargetStrLen &lt;= 0) THEN&lt;br&gt;    SET OutString = '';&lt;br&gt;  ELSEIF (iSearchStrLen &gt; iTargetStrLen) THEN&lt;br&gt;    SET OutString = TargetString;&lt;br&gt;  ELSE&lt;br&gt;&lt;br&gt;    SET sOutString = '';&lt;br&gt;    SET sTmpSearchStr = TargetString;&lt;br&gt;    SET iSearchIndex = POSITION( SearchString IN sTmpSearchStr );&lt;br&gt;&lt;br&gt;    WHILE iSearchIndex &lt;&gt; 0 DO&lt;br&gt;&lt;br&gt;      SET sOutString = sOutString || &lt;br&gt;        SUBSTR(&lt;br&gt;          sTmpSearchStr&lt;br&gt;          , 1&lt;br&gt;          , iSearchIndex - 1&lt;br&gt;          ) &lt;br&gt;        || ReplaceString ;&lt;br&gt;      SET sTmpSearchStr = SUBSTR(&lt;br&gt;          sTmpSearchStr&lt;br&gt;          , iSearchIndex + iSearchStrLen&lt;br&gt;          , CHAR_LENGTH(sTmpSearchStr) - (iSearchIndex + iSearchStrLen) + 1&lt;br&gt;          );&lt;br&gt;      SET iSearchIndex = POSITION( SearchString IN sTmpSearchStr );&lt;br&gt;&lt;br&gt;    END WHILE;&lt;br&gt;&lt;br&gt;    SET sOutString = sOutString &lt;br&gt;      || SUBSTR (&lt;br&gt;        sTmpSearchStr&lt;br&gt;        , 1&lt;br&gt;        , CHAR_LENGTH(TRIM(TRAILING FROM sTmpSearchStr))&lt;br&gt;        );&lt;br&gt;    SET OutString = sOutString;&lt;br&gt;&lt;br&gt;  END IF;&lt;br&gt;&lt;br&gt;END;&lt;br&gt;&lt;/pre&gt;</description><pubDate>Wed, 04 Jan 2006 11:49:29 GMT</pubDate><dc:creator>Daniel Giabbai</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Akhil,&lt;br&gt;&lt;br&gt;Crude as "Can be improved further"&lt;br&gt;&lt;br&gt;Vinay</description><pubDate>Wed, 04 Jan 2006 08:51:04 GMT</pubDate><dc:creator>Vinay Bagare</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Hi Vinay, &lt;br&gt;&lt;br&gt;It works fine. thanks.&lt;br&gt;But what do you mean by crude form ?&lt;br&gt;&lt;br&gt;&lt;br&gt;</description><pubDate>Wed, 04 Jan 2006 04:49:29 GMT</pubDate><dc:creator>Akhil</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>I came up w/t a Macro that can accomplish this.&lt;br&gt;&lt;br&gt;You may want to use the same logic in your procedure or SQL.&lt;br&gt;&lt;br&gt;REPLACE MACRO SYSDBA.REPLACE_STR ( SEARCH_STR VARCHAR(400), CHNG_STR VARCHAR(400)) &lt;br&gt;AS &lt;br&gt;(&lt;br&gt;SEL &lt;br&gt;ORIGINAL_STRING&lt;br&gt;,REPLACED_STRING&lt;br&gt;FROM &lt;br&gt;(SEL &lt;br&gt;NME AS ORIGINAL_STRING&lt;br&gt;,POSITION(:SEARCH_STR  IN NME) AS START_POINT&lt;br&gt;,CHARACTER_LENGTH(TRIM(NME)) AS MAX_LEN&lt;br&gt;,CHARACTER_LENGTH(:SEARCH_STR) AS NO_CHAR&lt;br&gt;,CASE WHEN START_POINT &gt; 1 &lt;br&gt;              THEN SUBSTR(NME, 1 , (START_POINT-1)) || :CHNG_STR&lt;br&gt;                        || SUBSTR(NME, (START_POINT+NO_CHAR), MAX_LEN) &lt;br&gt;              WHEN START_POINT = 1&lt;br&gt;              THEN :CHNG_STR || SUBSTR(NME, NO_CHAR+1, MAX_LEN) &lt;br&gt;              WHEN MAX_LEN = START_POINT + NO_CHAR &lt;br&gt;              THEN SUBSTR(NME, 1 ,(START_POINT-1))   || :CHNG_STR END AS REPLACED_STRING&lt;br&gt;FROM SYSDBA.TEST ) AS T&lt;img src='images/emotions/wink.gif' height='20' width='20' border='0' title='Wink' align='absmiddle'&gt;;&lt;br&gt;&lt;br&gt;&lt;br&gt;I have created a test table and you can execute the is macro as &lt;br&gt;&lt;br&gt;EXEC SYSDBA.REPLACE_STR ('VINAY','DBA')&lt;br&gt;It seems to work but is in crude form.&lt;br&gt;&lt;br&gt;Vinay&lt;br&gt;&lt;br&gt;</description><pubDate>Tue, 03 Jan 2006 14:43:32 GMT</pubDate><dc:creator>Vinay Bagare</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Or you can:&lt;br&gt;&lt;br&gt;create table your_table2 &lt;br&gt;as your_table &lt;br&gt;with no data&lt;br&gt;;&lt;br&gt;&lt;br&gt;insert into your_table2 &lt;br&gt;	select substring(your_field FROM 1 FOR INDEX(your_field,' and') -1) || ' or ' || substring(your_field FROM INDEX(your_field,'and ')+4) &lt;br&gt;	from your_table;&lt;br&gt;&lt;br&gt;drop table your_table;&lt;br&gt;&lt;br&gt;rename your_table2 to your_table;&lt;br&gt;&lt;br&gt;Marek</description><pubDate>Tue, 03 Jan 2006 04:28:09 GMT</pubDate><dc:creator>surmik</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Hi&lt;br&gt;&lt;br&gt;I agree, I have tried using a normal Update &lt;br&gt;&lt;br&gt;"update dba.testing set linea = 'or' where linea like '%and%' ;"&lt;br&gt;&lt;br&gt;But one gets a duplicate error. You can do this with a program or a UDF.&lt;br&gt;&lt;br&gt;Divvy</description><pubDate>Tue, 03 Jan 2006 01:02:46 GMT</pubDate><dc:creator>Divvy</dc:creator></item><item><title>RE: String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Hi Akhil,&lt;br&gt;There is no such finction avaliable in TD, but you can make your work easy with UDF. There is a Oracle UDF which can do this job. I guess you can find the UDFs at www.teradata.com&lt;br&gt;&lt;br&gt;-Cheers&lt;br&gt;</description><pubDate>Mon, 02 Jan 2006 08:12:28 GMT</pubDate><dc:creator>khab</dc:creator></item><item><title>String Replacement</title><link>http://www.teradata.com/teradataforum/Topic3272-9-1.aspx</link><description>Hi,&lt;br&gt;&lt;br&gt;Is there is a way to replace a particular in a column with another character ?&lt;br&gt;&lt;br&gt;Support a Column values like&lt;br&gt;&lt;br&gt;Yahoo and HotMail&lt;br&gt;HotMail and Yahoo&lt;br&gt;Yahoo and GMail&lt;br&gt;GMail and HotMail&lt;br&gt;&lt;br&gt;I would like to replace "and" word with any other word like 'or'.&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks and Regards&lt;br&gt;</description><pubDate>Mon, 02 Jan 2006 05:16:02 GMT</pubDate><dc:creator>Akhil</dc:creator></item></channel></rss>