Oracle表中数据如何能够显示出特殊字符"•"?求知道!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle表中数据如何能够显示出特殊字符"•"?求知道!相关的知识,希望对你有一定的参考价值。

参考技术A 数据库
所有存在标识符的地方,我都不会在表名称、数据库密码里使用@, $, &, *, `这样的字符。最大的原因是这些字符在脚本中往往会产生歧义。比如在SQL*Plus中,“@”符号是用来在连接数据库时定义一个TNSNAMES输入的。在Shell脚本中,“$”符号表示在它后面的内容代表一个变量名称。如果这些特殊的字符用在了表名称中,那么一个与这个表相关的Shell脚本功能有可能会受到影响,从而无法实现相应的功能。除了以上举的两个例子,在使用Oracle数据库时还有许多其他字符需要注意,而目前所有的版本都存在这样的问题,因此Oracle DBA一定要谨记着一点。
参考技术B 没看明白你的意思。要是说栏位的值的话,是可以使用.的。
若是说表或栏位的名称的话可以用双引号括起来,引用时也要用双引号,如下:
create table "test.table1" (
a number ,
b number )

select * from "test.table1"追问

例如导演栏中数据是一个外国人名字,中间需要此符号,建表完成后,不能够识别,以问号代替了,怎么样能够建表完成后,依旧能够显示的!

追答

还是没看明白.可以的话最好截一些数据出来看一下

如何在oracle数据库中输入“&”等特殊字符? [复制]

【中文标题】如何在oracle数据库中输入“&”等特殊字符? [复制]【英文标题】:How to enter special characters like "&" in oracle database? [duplicate] 【发布时间】:2011-05-09 16:38:26 【问题描述】:

我想在我的插入语句中插入特殊字符 &。我的插入是:

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

如果我尝试运行此查询,我会收到一个弹出窗口,它要求我输入 Oracle_14 的值。

如何在 oracle db 的插入语句中输入& 等特殊字符?

【问题讨论】:

您使用哪个工具来执行插入? 我正在使用 SQLDeveloper。 【参考方案1】:

如果你在 SQL*Plus 或 SQL Developer 中,你想运行

SQL> set define off;

在执行 SQL 语句之前。这会关闭对替换变量的检查。

像这样的 SET 指令是针对客户端工具(SQL*Plus 或 SQL Developer)的指令。它们具有会话范围,因此每次连接时都必须发出指令(如果要将默认值更改为将 DEFINE 设置为 OFF,则可以将指令放在客户端计算机的 glogin.sql 中)。您不会影响数据库中的任何其他用户或会话。

【讨论】:

17 秒...我如此接近 所以这只会关闭我的 sql 或完整表或完整数据库的定义,我也可以在生产插入脚本中有类似的东西吗? IMO,您的生产代码应该使用替换,或者至少自己处理它。不过,我相信代码会为您的登录会话进行设置。 @OMG Ponies-甜蜜,甜蜜的复仇,为你击败我的所有时间:-) @Rachel - 在生产脚本中设置 DEFINE OFF 非常好,是的。它将影响在同一会话中运行的所有其他语句(当然,如果您愿意,您可以稍后在脚本中设置 DEFINE ON)。但是,在生产环境中运行的脚本中存在替换变量通常是不常见的——您通常不希望生产脚本提示用户输入信息,您通常希望它成为脚本的一部分。【参考方案2】:

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

【讨论】:

【参考方案3】:

贾斯汀的答案是要走的路,但作为一个仅供参考,您可以将 chr() 函数与要插入的字符的 ascii 值一起使用。对于这个例子,它将是:

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

【讨论】:

chr(38) 拯救了我的一天。谢谢【参考方案4】:

你可以简单地通过跟随一个点来逃避 &。试试这个:

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

【讨论】:

但这会插入“。”也是。有什么想法吗?【参考方案5】:

插入包含“&”的值。使用以下代码。

Set define off;

Begin

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

End ;

然后在 Oracle 或 Toad 编辑器中按 F5。

【讨论】:

【参考方案6】:

有 3 种方法可以做到这一点:

1) 只需执行 SET DEFINE OFF;然后执行insert stmt。

2) 只需在单引号内连接保留字并将其连接起来。 例如。选择'Java_22' || '&'|| ':' || dual --(:) 中的“Oracle_14”是可选的。

3) 通过使用 CHR 函数和连接。 例如。选择'Java_22' || chr(38)||' Oracle_14' 来自双重

希望有帮助!!!

【讨论】:

【参考方案7】:

如果要在开头或结尾添加转义字符,如"JAVA",则使用:

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

【讨论】:

【参考方案8】:

对于特殊字符集,您需要检查 UNICODE Charts。选择好你的角色后,就可以使用下面的sql语句了,

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

--

dōTTTT

【讨论】:

【参考方案9】:

你也可以像这样使用 concat :D

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

【讨论】:

【参考方案10】:

我们也可以用另一种方式 例如,将带有特殊字符“Java_22 & Oracle_14”的值插入到数据库中,我们可以使用以下格式..

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

虽然它认为是 3 个不同的令牌,但我们没有任何选择,因为 oracle 文档中提供的转义序列处理不正确。

【讨论】:

这就是 EternalNoob 所说的,并且接近 Craig 第一次提出问题时所说的。【参考方案11】:
strAdd=strAdd.replace("&","'||'&'||'");

【讨论】:

【参考方案12】:

在我的情况下,我需要插入一行文字“请拨打 *001 寻求帮助”。 在这种情况下,特殊字符是星号。

通过使用 sqlPlus 直接插入,它失败并出现错误“SP2-0734:未知命令开始...”

我尝试设置逃逸但没有成功。

为了实现,我在文件系统上创建了一个文件 insert.sql

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

然后我从 sqlPlus 执行

@insert.sql

并且插入了行。

【讨论】:

【参考方案13】:

您可以使用反斜杠字符来转义单个字符或符号

'Java_22 \& Oracle_14'

或大括号转义一串字符或符号

'Java_22 & Oracle_14'

【讨论】:

你的第一种方法行不通。 第二种方法也打印括号​​,第一种方法打印\& 匿名用户说:备注:这最初是在 Oracle 文档中说明的,但不适用于 SQL Developer 等客户端。

以上是关于Oracle表中数据如何能够显示出特殊字符"•"?求知道!的主要内容,如果未能解决你的问题,请参考以下文章

SQL中向表中添加的字符都变成问号了,啥情况?怎么处理?

Hive--对空值和NULL的处理

linux环境下oracle如何选择特殊字符

sqlserver:如何截取字符串后联合查询出数据

如何在 H2 的查询结果中显示字段的隐藏字符?

随机生成密码,长度6-10位、不可包含特殊字符、必须包含大写、小写和数字,oracle 如何实现?