【转】ORACLE如何找出某一列中含有中文的记录

本文介绍了Oracle9i中的ASCIISTR函数,该函数可以返回字符对应的ASCII码,并将非ASCII码字符转化为Unicode表示。通过示例展示了如何使用ASCIISTR处理不同类型的字符串数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 9i引入的一个字符函数
功能:返回字符对应的ASCII码,对于非ASCII码转化为Unicode并前置符号'/'

下面做个例子来看看

 

 

SQL> create table test(tt varchar2(10));

Table created.

SQL> insert into test values('haha');

1 row created.

SQL> insert into test values('哈哈');

1 row created.

SQL> insert into test values('@#$%');

1 row created.

SQL> insert into test values('po/efe');

1 row created.

SQL> commit;
SQL> select tt,asciistr(tt) from test;

TT         ASCIISTR(TT)
---------- --------------------------------------------------
haha       haha
哈哈       /FFFD/FFFD/FFFD/FFFD
@#$%       @#$%
po/efe     po/005Cefe

SQL> select * from test
  2  where asciistr(tt) like '%/%' and instr(tt,'/') <= 0;

TT
----------
哈哈

后面那个instr(tt,'/') <= 0条件是为了排除本身内容中就包含'/'的记录,把这个条件取掉试试

SQL> select * from test
  2  where asciistr(tt) like '%/%';

TT
----------
哈哈
po/efe

 

原文地址:http://blog.youkuaiyun.com/wh62592855/archive/2009/12/08/4967682.aspx

### Oracle SQL 查询字段去重方法 在 Oracle 数据库中,`SELECT DISTINCT` 是一种常用的方式来去除查询结果中的重复记录并返回唯一的数据。以下是关于 `DISTINCT` 的详细介绍以及其实现方式。 #### 使用 `SELECT DISTINCT` 实现字段去重 通过 `SELECT DISTINCT` 可以确保查询的结果集中只包含唯一的值组合。如果只需要针对单个字段进行去重,则可以直接使用该关键字;如果是多字段组合,则会对整个字段集合进行去重[^1]。 ```sql -- 单字段去重示例 SELECT DISTINCT dept FROM employees; /* 结果: +---------+ | dept | +---------+ | HR | | IT | | Finance | +---------+ */ ``` 对于多个字段的情况,`DISTINCT` 将基于所有选定字段的组合来进行去重: ```sql -- 多字段去重示例 SELECT DISTINCT dept, position FROM employees; ``` 上述查询将返回部门 (`dept`) 和职位 (`position`) 组合后的唯一记录[^2]。 --- #### 特殊情况:NULL 值处理 需要注意的是,在使用 `DISTINCT` 进行去重时,`NULL` 被视为一个特殊的值。如果有两行数据在同一列上都具有 `NULL` 值,那么它们会被认为是相同的,并被当作一条记录保留下来[^3]。 ```sql -- 含有 NULL 值的表结构 CREATE TABLE test_nulls ( column_a VARCHAR(50), column_b VARCHAR(50) ); INSERT INTO test_nulls VALUES ('A', NULL); INSERT INTO test_nulls VALUES ('B', 'Value'); INSERT INTO test_nulls VALUES ('C', NULL); INSERT INTO test_nulls VALUES ('D', 'Value'); -- 对含有 NULL 列进行去重 SELECT DISTINCT column_b FROM test_nulls; /* 结果: +----------+ | column_b | +----------+ | Value | | (null) | +----------+ */ ``` 可以看到,尽管存在两个 `NULL` 值,但在最终结果中只会显示一次[^4]。 --- #### 替代方案:利用聚合函数实现去重 除了 `DISTINCT` 关键字外,还可以借助其他技术手段完成类似的去重功能。例如,可以通过 `GROUP BY` 子句达到相同的效果: ```sql -- 使用 GROUP BY 实现去重效果 SELECT dept, position FROM employees GROUP BY dept, position; ``` 此方法适用于更复杂的场景,比如需要附加计算或其他逻辑操作时。 --- #### 性能优化建议 当面对大规模数据集时,应考虑索引的设计以提高性能。创建覆盖所涉及列的复合索引能够显著加快 `DISTINCT` 或者 `GROUP BY` 类型的操作速度。 ```sql -- 创建复合索引来加速查询 CREATE INDEX idx_dept_position ON employees(dept, position); ``` 这样可以在实际运行过程中减少扫描全表的时间消耗。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值