sql - mac - ¿Cómo ingresar caracteres especiales como "&" en la base de datos Oracle?
pl sql developer portable (13)
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.
Al usar la inserción directa usando sqlPlus falló con el error "SP2-0734: comando desconocido comenzando ..."
Intenté establecer el escape sin éxito.
Para lograrlo, creé un archivo insert.sql en el sistema de archivos con
insert into testtable (testtext) value (''Please dial *001 for help'');
Luego, desde sqlPlus, ejecuté
@insert.sql
Y se insertó la fila.
Esta pregunta ya tiene una respuesta aquí:
Quiero insertar un carácter especial &
en mi declaración de inserción. Mi inserción es:
INSERT INTO STUDENT(name, class_id) VALUES (''Samantha'', ''Java_22 & Oracle_14'');
Si intento ejecutar esta consulta, recibo una ventana emergente y me pide que ingrese el valor de Oracle_14
.
¿Cómo puedo ingresar caracteres especiales como &
en la declaración de inserción para Oracle DB?
Hay 3 formas de hacerlo:
1) Simplemente configure SET DEFINE OFF; y luego ejecuta la inserción stmt.
2) Simplemente concatenando la palabra reservada entre comillas simples y concatenándola. Por ejemplo, seleccione ''Java_22'' || ''&'' || '':'' || ''Oracle_14'' de dual - (:) es un opcional.
3) Mediante el uso de la función CHR junto con la concatenación. Por ejemplo, seleccione ''Java_22'' || chr (38) || '' Oracle_14 ''desde dual
Espero que esto ayude !!!
La respuesta de Justin es el camino a seguir, pero también como un FYI puedes usar la función chr () con el valor ascii del personaje que deseas insertar. Para este ejemplo, sería:
INSERT INTO STUDENT(name, class_id) VALUES (''Samantha'', ''Java_22 ''||chr(38)||'' Oracle_14'');
Para el conjunto de caracteres especiales, debe verificar los gráficos UNICODE. Después de elegir tu personaje, puedes usar la declaración SQL a continuación,
SELECT COMPOSE(''do'' || UNISTR(''/0304'' || ''TTTT'')) FROM dual;
-
d ō TTTT
Para insertar valores que tiene ''&'' en él. 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.
Pruebe con ''Java_22 ''||''&''||'' Oracle_14''
''Java_22 ''||''&''||'' Oracle_14''
Puede usar la barra invertida para escapar de un solo carácter o símbolo
''Java_22 / & Oracle_14''
o llaves para escapar de una cadena de caracteres o símbolos
''{Java_22 y Oracle_14}''
Si está en SQL * Plus o SQL Developer, quiere ejecutar
SQL> set define off;
antes de ejecutar la declaración SQL. Eso pasa de la comprobación de variables de sustitución.
Directivas SET como esta son instrucciones para la herramienta del 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.
Si se va a agregar un carácter de escape al principio o al final como "JAVA"
, utiliza:
INSERT INTO STUDENT(name, class_id) VALUES (''Samantha'', ''''||chr(34)||''JAVA''||chr(34)||'''');
También podemos usar otra forma, por ejemplo, para insertar el valor con los caracteres especiales "Java_22 y Oracle_14" en db, podemos usar el siguiente formato.
''Java_22'' || ''&'' || '' Oracle_14 ''
Aunque consideramos 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.
También puedes usar concat así: D
Insert into Table Value(CONCAT(''JAVA '',CONCAT(''& '', ''Oracle''));
simplemente puede escapar y siguiendo un punto. prueba esto:
INSERT INTO STUDENT(name, class_id) VALUES (''Samantha'', ''Java_22 &. Oracle_14'');
strAdd = strAdd.replace ("&", "''||'' & ''||''");