在Oracle中,波浪号(~)的用法是什么?如果我们使用带有两个波浪号的列名和表名,请与我分享以下查询的输出。
从~表名~中选择~列名~
oknrviil1#
从数据库对象名和限定符文档中:1.不带引号的标识符必须以数据库字符集中的字母字符开头。带引号的标识符可以以任何字符开头。1.不带引号的标识符只能包含数据库字符集中的字母数字字符以及下划线(_)、美元符号($)和磅符号(#)。数据库链接还可以包含句点(.)和“at”符号(@)。Oracle强烈建议您不要在不带引号的标识符中使用$和#。带引号的标识符可以包含任何字符、标点符号以及空格。但是,带引号或不带引号的标识符都不能包含双引号或空字符(\0)。在查询中:
_
$
#
.
@
\0
SELECT ~column_name~ from ~Table_name~
~column_name~和~Table_name~是不带引号的标识符,因为它们没有用双引号"括起来。但是,由于它们不是以字母字符开头,并且包含~字符(不是字母数字、_、$或#),因此标识符无效,查询将引发异常错误,输出:
~column_name~
~Table_name~
"
~
ORA-00911: invalid character
且将不执行。fiddle
2uluyalo2#
为了直接回答问题的标题,波浪号很少用作PL/SQL不等于运算符:
begin if 1 ~= 2 then dbms_output.put_line('Not equal'); end if; end; /
据我所知,这是在Oracle中唯一有效使用波浪号的方法,正如MTO所解释的,它当然不能用于没有双引号的对象名称。
2条答案
按热度按时间oknrviil1#
从数据库对象名和限定符文档中:
1.不带引号的标识符必须以数据库字符集中的字母字符开头。带引号的标识符可以以任何字符开头。
1.不带引号的标识符只能包含数据库字符集中的字母数字字符以及下划线(
_
)、美元符号($
)和磅符号(#
)。数据库链接还可以包含句点(.
)和“at”符号(@
)。Oracle强烈建议您不要在不带引号的标识符中使用$
和#
。带引号的标识符可以包含任何字符、标点符号以及空格。但是,带引号或不带引号的标识符都不能包含双引号或空字符(
\0
)。在查询中:
~column_name~
和~Table_name~
是不带引号的标识符,因为它们没有用双引号"
括起来。但是,由于它们不是以字母字符开头,并且包含~
字符(不是字母数字、_
、$
或#
),因此标识符无效,查询将引发异常错误,输出:且将不执行。
fiddle
2uluyalo2#
为了直接回答问题的标题,波浪号很少用作PL/SQL不等于运算符:
据我所知,这是在Oracle中唯一有效使用波浪号的方法,正如MTO所解释的,它当然不能用于没有双引号的对象名称。