oracle查看实例大小写,如何在Oracle中执行不区分大小写的搜索?

问题:

您要在Oracle中执行不区分大小写的搜索。

处理案例问题的一种方法是使用内置的UPPER和LOWER函数。这些函数使您可以强制单个操作对字符串进行大小写转换

示例DECLARE

full_name1  VARCHAR2(30) := 'roger federer';

full_name2   VARCHAR2(30) := 'ROGER FEDERER';

BEGIN

IF LOWER(full_name1) = LOWER(full_name2) THEN

DBMS_OUTPUT.PUT_LINE( full_name1 || ' and ' || full_name2 || ' are the same.');

END IF;

END;

在上面的示例中,将full_name1和full_name2首先转换为LOWER CASE,然后将它们相互比较,从而得到输出

罗杰·费德勒和罗杰·费德勒是相同的。

UPPER和LOWER函数的一个缺点是性能。应用于字段的任何功能都会降低性能。

从Oracle Database 10g第2版开始,您可以使用初始化参数NLS_COMP和NLS_SORT来使所有字符串比较不区分大小写。

我们需要将NLS_COMP参数设置为LINGUISTIC,这将告诉数据库使用NLS_SORT进行字符串比较。然后,我们将NLS_SORT设置为不区分大小写的设置,例如BINARY_CI。

默认情况下,NLS_COMP设置为BINARY。我们可以使用LEAST函数来查看大写字符是否比小写字符低。

示例SELECT LEAST ('ROGER FEDERER','roger federer') FROM dual;

上面的SQL返回“ ROGER FEDERER”,告诉我们大写字母排序低于小写字母。

现在,我们将设置几个参数。设置NLS_COMP以指定该语言排序。

设置NLS_SORT以指定所需的排序规则。

示例ALTER SESSION SET NLS_COMP=LINGUISTIC

ALTER SESSION SET NLS_SORT=BINARY_CI

在为会话设置上述设置后,我们将再次打电话给LEAST至少一次,以查看返回的内容。

示例SELECT LEAST ('ROGER FEDERER','roger federer') FROM dual;

输出结果roger federer

最后,我们将调用上面的pl / sql块,而无需应用UPPER和LOWER函数来比较字符串。

示例DECLARE

full_name1  VARCHAR2(30) := 'roger federer';

full_name2   VARCHAR2(30) := 'ROGER FEDERER';

BEGIN

IF full_name1 = full_name2 THEN

DBMS_OUTPUT.PUT_LINE( full_name1 || ' and ' || full_name2 || ' are the same.');

END IF;

END;

罗杰·费德勒和罗杰·费德勒是相同的。

设置将一直保留,直到您关闭会话。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值