2010-11-14 33 views
38

voglio inserire caratteri speciali & nella mia dichiarazione di inserimento. Il mio inserimento è:Come inserire caratteri speciali come "&" nel database Oracle?

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

Se provo a eseguire questa query sto ottenendo un popup e mi chiede di immettere il valore per Oracle_14.

Come posso inserire caratteri speciali come & nella dichiarazione dell'inserto per Oracle db?

+0

Quale strumento stai utilizzando per eseguire l'inserimento? – SimonJ

+0

Sto usando SQLDeveloper. – Rachel

risposta

49

Se siete in SQL * Plus o SQL Developer, si desidera eseguire

SQL> set define off; 

prima di eseguire l'istruzione SQL. Che giri del controllo per le variabili di sostituzione.

direttive di questo tipo sono le istruzioni per lo strumento client (SQL * Plus o SQL Developer). Hanno scope di sessione, in modo che avrebbe dovuto emettere la direttiva ogni volta che ci si connette (si può mettere la direttiva in glogin.sql del computer client, se si desidera modificare il valore predefinito di avere DEFINE impostato su OFF). Non vi è alcun rischio che si possa avere un impatto su qualsiasi altro utente o sessione nel database.

+9

17 secondi ... Io ero * così * chiudi –

+0

così questo spegnerà solo la definizione per il mio sql o per la tabella completa o il database completo posso anche avere qualcosa di simile nello script di inserimento di produzione? – Rachel

+0

IMO, il tuo codice di produzione dovrebbe essere * usando * sostituzione, o almeno, gestendolo da solo. Credo che il codice faccia l'impostazione per la sessione di accesso, comunque. –

17

Prova 'Java_22 '||'&'||' Oracle_14'

+0

Questa soluzione funziona bene. – Rachel

-3

è possibile utilizzare il carattere di backslash per sfuggire un singolo carattere o un simbolo

'Java_22 \ & Oracle_14'

o graffe per sfuggire a una stringa di caratteri o simboli

'{Jav a_22 & Oracle_14}'

+0

il tuo primo approccio non funziona. – Rachel

+0

Stampa anche la parentesi per il secondo approccio e '\ &' per il primo approccio. – Rachel

+2

L'utente anonimo dice: * Nota: questo è originariamente indicato nella documentazione Oracle ma non funziona in client come SQL Developer. * – Pubby

9

risposta di Justin è la strada da percorrere, ma anche come un FYI è possibile utilizzare la funzione Chr() con il valore ASCII del carattere che si desidera inserire. Per questo esempio sarebbe:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 '||chr(38)||' Oracle_14'); 
0

Possiamo usare un altro modo così ad esempio per inserire il valore con i caratteri speciali 'Java_22 & Oracle_14' in db possiamo utilizzare il seguente formato ..

'Java_22' || ' & '||' Oracle_14'

Anche se considera come 3 diversi gettoni noi non hanno alcuna opzione come la gestione della sequenza di escape fornite nella documentazione di Oracle non è corretto.

+1

Ecco cosa ha detto EternalNoob, e vicino a quello che Craig ha detto, quando la domanda è stata posta per la prima volta. –

0

Se un carattere di escape è da aggiungere all'inizio o alla fine come "JAVA", quindi utilizzare:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', ''||chr(34)||'JAVA'||chr(34)||''); 
1

per inserire i valori che ha ottenuto '&' in esso. Usa il codice folloiwng.

Set define off; 

Begin 

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 & Oracle_14'); 

End ; 

E Premere F5 da Oracle o Toad Editors.

0

Per set di caratteri speciali, è necessario controllare i grafici UNICODE. scegli Dopo il vostro personaggio, è possibile utilizzare un'istruzione SQL di seguito,

SELECT COMPOSE('do' || UNISTR('\0304' || 'TTTT')) FROM dual; 

-

d Ò TTTT

0

Inoltre è possibile utilizzare concat in questo modo: D

Insert into Table Value(CONCAT('JAVA ',CONCAT('& ', 'Oracle')); 
-1

Nel mio caso ho bisogno di inserire una riga con il testo "Componi * 001 per aiuto". In questo caso il carattere speciale è un asterisco.

Utilizzando l'inserimento diretto utilizzando sqlplus non è riuscito con l'errore "SP2-0734: comando sconosciuto a cominciare ..."

Ho provato impostare la fuga senza successo.

Per raggiungere, ho creato un file insert.sql sul filesystem con

insert into testtable (testtext) value ('Please dial *001 for help'); 

Poi da sqlplus ho eseguito

@insert.sql 

ed è stata inserita fila.

0

Ci sono 3 modi per farlo:

1) semplicemente SET DEFINE OFF; e quindi eseguire l'insert stmt.

2) Semplicemente concatenando la parola riservata tra virgolette singole e concatenandola. E.g. Seleziona 'Java_22' || '&' || ':' || 'Oracle_14' da doppio - (:) è un optional.

3) Utilizzando la funzione CHR insieme alla concatenazione. E.g. Seleziona 'Java_22' || chr (38) ||' Oracle_14 'da doppio

Spero che questo aiuto !!!

0

strAdd = strAdd.replace ("&", "'||' & '||'");

1

si può semplicemente scappare & seguendo un punto. prova questo:

INSERT INTO STUDENT(name, class_id) VALUES ('Samantha', 'Java_22 &. Oracle_14'); 
Problemi correlati