2010-11-14 196 views
38

Quiero insertar el carácter especial & en mi declaración de inserción. Mi inserto es:¿Cómo ingresar caracteres especiales como "&" en la base de datos Oracle?

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

Si trato de ejecutar esta consulta que estoy recibiendo un mensaje emergente y me pide que introduzca el valor de Oracle_14.

¿Cómo puedo ingresar caracteres especiales como & en la instrucción de inserción para Oracle db?

+0

¿Qué herramienta está utilizando para realizar la inserción? – SimonJ

+0

Estoy usando SQLDeveloper. – Rachel

Respuesta

49

Si se encuentra en SQL * Plus o SQL Developer, que desea ejecutar

SQL> set define off; 

antes de ejecutar la instrucción SQL. Eso pasa de la comprobación de variables de sustitución.

Las directivas SET como esta son instrucciones para la herramienta de cliente (SQL * Plus o SQL Developer). Tienen alcance de sesión, por lo que tendrías que emitir la directiva cada vez que te conectes (puedes poner la directiva en glogin.sql de tu máquina cliente si deseas cambiar el valor predeterminado para que DEFINE se establezca en OFF). No hay riesgo de que impacte a ningún otro usuario o sesión en la base de datos.

+9

17 segundos ... Estaba * tan * cerca –

+0

así que ¿esto solo desactivará la definación para mi sql o para la tabla completa o la base de datos completa también puedo tener algo como esto en script de inserción de producción? – Rachel

+0

IMO, su código de producción debe ser * utilizando * sustitución, o como mínimo, se maneja por sí mismo. Sin embargo, creo que el código establece la configuración para su sesión de inicio de sesión. –

17

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

+0

Esta solución funciona bien. – Rachel

-3

También se puede usar la barra invertida para escapar de un solo carácter o símbolo

'Java_22 \ & Oracle_14'

o aparatos ortopédicos para escapar de una cadena de caracteres o símbolos

'{Jav a_22 & Oracle_14}'

+0

su primer enfoque no funciona. – Rachel

+0

Imprime el corchete también para el segundo enfoque y '\ &' para el primer acercamiento. – Rachel

+2

Usuario anónimo dice: * Observación: esto se instruyó originalmente en la documentación de Oracle pero no funciona en el cliente como SQL Developer. * – Pubby

9

respuesta de Justin es el camino a seguir, sino también como un FYI puede utilizar la función Chr() con el valor ASCII del carácter que desea insertar. Para este ejemplo sería:

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

Podemos utilizar otra forma, así por ejemplo, para insertar el valor con 'Java_22 & Oracle_14' caracteres especiales en db podemos utilizar el siguiente formato ..

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

Aunque se considera como 3 tokens diferentes, no tenemos ninguna opción ya que el manejo de la secuencia de escape proporcionada en la documentación de Oracle es incorrecta.

+1

Eso es lo que dijo EternalNoob, y cerca de lo que dijo Craig, cuando se hizo la pregunta por primera vez. –

0

Si un carácter de escape se va a añadir al principio o al final como "JAVA", a continuación, utilizar:

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

para insertar valores que ha conseguido '&' en ella. Usa el siguiente código.

Set define off; 

Begin 

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

End ; 

Y presione F5 desde Oracle o Toad Editors.

0

Para un juego de caracteres especial, debe verificar los gráficos UNICODE. Después de elegir tu personaje, puede utilizar la instrucción SQL a continuación,

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

-

d ò TTTT

0

También puede utilizar concat así: D

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

En mi caso, necesito insertar una fila con el texto 'Por favor marque * 001 para obtener ayuda'. En este caso, el carácter especial es un asterisco.

Mediante el uso de inserción directa utilizando SQLPLUS que se produjo el error "SP2-0734: comando desconocido empezando ..."

He probado establecer escapar sin éxito.

Para lograr, he creado un archivo en el sistema de archivos insert.sql con

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

Luego de SQLPLUS ejecuté

@insert.sql 

Y se insertó fila.

0

Hay 3 maneras de hacerlo:

1) Basta con hacer SET DEFINE OFF; y luego ejecuta la inserción stmt.

2) Simplemente mediante la concatenación de palabras reservadas entre comillas simples y concatenando él. P. ej. Seleccione 'Java_22' || '&' || ':' || 'Oracle_14' de dual - (:) es un opcional.

3) Mediante el uso de la función CHR junto con concatenación. P. ej. Seleccione 'Java_22' || chr (38) || ' Oracle_14 'de dual

Espero que esta ayuda !!!

0

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

1

simplemente puede escapar & siguiendo un punto. intente esto:

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