2017-02-01 5 views
1

Hallo, ich brauche Platz in String zu entfernen. Kann mir jemand helfen mit diesen.Entfernen Sie Platz mit in String in Oracle SQL

String1 = "Biotin-dPEG <REFERENCE ID="9869" TYPE="trademark"/>n-azide products are single molecular weight dPEG <REFERENCE ID="9869" TYPE="trademark"/> products that permit biotin labeling with precise spacing" . 

Ich brauche Raum zu entfernen, bevor <REFRENCE ID = "9869 ...> in string1.

+0

Oracle ist eine Datenbank. Normalerweise werden String-Manipulationen für einzelne Werte nicht durchgeführt. PL/SQL ist eine Skriptsprache, die Oracle zugeordnet ist. Wenn Sie dies jedoch verwenden, wird die Zeichenfolge mit ': =', nicht '=' definiert. Daher verstehe ich die Frage nicht. –

+0

versuchen ** trimmen ** Funktion –

+0

sicher Entschuldigung für nicht klar zu erwähnen, diese früher –

Antwort

0

Dies wird den ganzen Raum entfernen umliegenden =

select regexp_replace('String1 = "Biotin-dPEG <REFERENCE ID="9869" TYPE="trademark"/>n-azide products are single molecular weight dPEG <REFERENCE ID = "9869" TYPE="trademark"/> products that permit biotin labeling with precise spacing" . 
','\s*=\s*','=') 
from dual 

String1="Biotin-dPEG <REFERENCE ID="9869" TYPE="trademark"/>n-azide products are single molecular weight dPEG <REFERENCE ID="9869" TYPE="trademark"/> products that permit biotin labeling with precise spacing" . 

Hier ist ein einfaches Demo

select regexp_replace('A = 1,B= 2,C=3,D= 4,E = 5','\s*=\s*','=') 
from dual 

A=1,B=2,C=3,D=4,E=5 

https://docs.oracle.com/cd/E18283_01/olap.112/e17122/dml_functions_2068.htm

https://docs.oracle.com/cd/E18283_01/server.112/e17118/ap_posix.htm#SQLRF020

+0

Danke @Dudu für Ihren Vorschlag. –

2

Mit regexp_replace:

with t(col) as (
    select 'Biotin-dPEG <REFERENCE ID="9869" TYPE="trademark"' from dual 
) 
-- test data. Dont mind the above -- 

select 
    regexp_replace(col, '\s+(<REFERENCE)','\1') 
from t; 

Produziert:

Biotin-dPEG<REFERENCE ID="9869" TYPE="trademark" 
+0

Danke @GurV Ich habe das kleine geändert und es hat funktioniert. Danke für Ihre wertvolle Zeit und Anregung. –

+0

Wählen Sie regexp_replace (col, '\ s + (

+0

@Animesh Die 'mit' Teil war sowieso eine Testtabelle mit CTE zu bauen. Froh, wenn es geholfen hat – GurV

0

Oracle-Setup:

CREATE TABLE data (string) AS 
SELECT 'Biotin-dPEG <REFERENCE ID="9869" TYPE="trademark"/>' FROM DUAL UNION ALL 
SELECT 'Biotin-dPEG <REFERENCE TYPE="trademark" ID="9869"/>' FROM DUAL; 

Abfrage:

SELECT REGEXP_REPLACE(
     UPDATEXML(
      xml, 
      '/root/REFERENCE[@ID="9869"][1]/preceding-sibling::text()', 
      RTRIM(
      EXTRACT(
       xml, 
       '/root/REFERENCE[@ID="9869"][1]/preceding-sibling::text()' 
      ) 
      ) 
     ).getClobVal(), 
     '^<root>|</root>$|^<root/>$' 
     ) AS string 
FROM (SELECT XMLType('<root>' || string || '</root>') AS xml 
     FROM DUAL); 

Ausgang:

STRING 
-------------------------------------------------- 
Biotin-dPEG<REFERENCE ID="9869" TYPE="trademark"/> 
Biotin-dPEG<REFERENCE TYPE="trademark" ID="9869"/> 
Verwandte Themen