oracle如何查询汉字 oracle简单查询

解决plsql链接oracle查询出汉字显示为乱码的问题

1.首先通过SQL语句:

成都创新互联是一家集网站建设,珠山企业网站建设,珠山品牌网站建设,网站定制,珠山网站建设报价,网络营销,网络优化,珠山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

select userenv('language') from dual;

查询出服务器端的编码,如我自己的查询结果为:

USERENV('LANGUAGE')

AMERICAN_AMERICA.ZHS16GBK

2.添加环境变量NLS_LANG ,值为: AMERICAN_AMERICA.ZHS16GBK,由此即可解决该问题。

在Oracle上用正规表示式判断是否有中文字

实现思路:汉字的Unicode是用“\”开始的,这个是与其它字符的区别。

sql: select * from tablename where asciistr(columnTest) like '%\%';

备注:这个asciistr就是字符转Unicode的方法,记住用法就可以了。

Oracle中的汉字显示

Oracle以其强大的数据库管理能力 高安全性 多用户操作时数据的一致性 赢得了用户的广泛青睐 获得了很高的市场占有率 但是 它在汉字信息显示时存在多种字符集 且相互之间不能通用 这就给多数据库之间的数据共享带来了一些麻烦 笔者从事Oracle数据库管理及应用软件的开发工作多年 常遇到Oracle数据库汉字显示的问题 主要现象是汉字显示为不可识别的乱码 信息无法使用 本文介绍笔者在实际工作中的一点心得 与大家一起探讨 中英文Oracle之间的数据共享在笔者的实际工作中 有为多个二级厂矿开发的基于Oracle数据库的应用程序 而各个单位所用的Oracle数据库 在安装时所采用的字符集各不相同 有的用英文字符集 有的用中文字符集 当表中的数据只是数字 英文信息时 数据共享是可以的; 当表中含有汉字信息时 以正常的方式进行共享 就看不到汉字了 而只会见到一些乱码 下面以Oracle 版的数据库为例说明解决方法 假设源数据库是中文字符集 目标数据库是英文字符集 利用 Delphi作为转换工具 实际的步骤依据导入和导出有所不同 导出数据时步骤如下 配置客户端字符集 首先将本机Oracle客户端的字符集配置得和源数据库的字符集一致 打开注册表 找到HKEY_LOCAL_MACHINE 选下面的SOFARE 再选Oracle 在注册表中找到NLS_LANG 将值改为 AMERICAN_AMERICA ZHS CGB 配置数据库别名 用Delphi的工具SQL EXPLORER配置两个数据库假名 其中DBSOURCE 用来连接源数据库 DBMIDDLE 用来连接中间数据库(Paradox表) 导出 打开Delphi的工具Database DeskTop 在主菜单中选Tools下面的Utilities 再选Copy 会弹出一个新的对话框 在Alias(数据库别名)中选择DBSOURCE 并输入用户口令 在打开的数据库中选择需要的表 点击OK按钮 在Alias(数据库别名)中选择DBMIDDLE 在File Name栏中输入目标表名 点击COPY按钮 如果显示: Copy Successfully Completed 则数据导出成功 导入数据时步骤如下: 配置客户端字符集 首先将本机Oracle客户端的字符集配置得和目标数据库的字符集一致 打开注册表 找到HKEY_LOCAL_MACHINE 选下面的SOFARE 再选Oracle 在注册表中找到NLS_LANG 将值改为 AMERICAN_AMERICA US ASCII 配置数据库别名 用Delphi的工具SQL EXPLORER配置一个数据库别名 DBTARGET 用来连接目标数据库 导入 打开Delphi的工具Database DeskTop 在主菜单中选Tools下面的Utilities 再选Copy 会弹出一个新的对话框 在Alias(数据库别名)中选择DBMIDDLE 在打开的数据库中选择需要的表 点击OK按钮 在Alias(数据库别名)中选择DBTARGET 并输入用户口令 在File Name栏中输入目标表名 点击COPY按钮 如果显示: Copy Successfully Completed 则数据导入成功 此时 在目标数据库中查看导入的表 汉字显示就正常了 小型机和PC服务器之间的数据共享笔者所在公司有小型机Alpha 作为数据库服务器 上面有多个二级单位使用 随着时间的推移 数据增加 用户增加 小型机不堪重负 运行速度缓慢 不能满足日常的工作需要 为了缓解这种情况 有部分单位自备了PC服务器 将数据从小型机上移植下来 建立了自己单独的数据库 两个数据库都安装的是英文字符集 从小型机上导出的数据 装入到PC服务器 遇到汉字信息也不能正常显示 这主要是因为两者的操作系统不同 小型机上是VMS系统 而PC服务器上是NT 有两种方法可以解决这个问题: 用仿真终端的方式将数据导出 用Telnet连接到小型机上 执行exp 将某个用户的数据库导出为一个* dmp文件 保存在PC服务器上 用FTP将数据取到本机 用FTP连接到小型机上 执行bin 再执行Get 将数据(* dmp文件)以二进制的方式传输到本机 注意这里必须用二进制方式 否则数据无法正常使用 得到小型机上的数据后 再将本机客户端配置得和PC服务器的字符集一致 将数据导入PC服务器数据库中 则一切数据均可使用了 数据库升级 在数据库的使用中常会遇到Oracle的版本升级 如何在保证原来数据安全的情况下 将数据库平稳地升级?这里分两种情况 英文字符集的安装 如果原来的数据库安装采用的是英文字符集 则从Oracle 升级到Oracle 时 只要将数据字典Props$中的参数修改为 US ASCII 即可 以系统DBA的身份登录SQL*PLUS 执行如下的命令 修改数据字典 SQLUPDATE PROPS$ SET VALUE$= US ASCII WHERE NAME= NLS_CHARACTERSET ; SQLMIT; 注意 修改后必须重新启动数据库 配置才起作用 然后将从Oracle 中文字符集的安装 如果原来的数据库安装采用的是中文字符集 直接将数据导入 是否可用呢?不可以 汉字显示为乱码 原因是Oracle 的中文字符集的参数是 ZHS CGB 而Oracle 的中文字符集的参数是 ZHS GBK 两者不一样 为了能正常地使用 必须修改Oracle 的数据字典的参数为 ZHS CGB 具体的修改步骤如下 用系统DBA的身份登录SQL*PLUS 执行 SQLUPDATE PROPS$ SET VALUE$= ZHS CGB WHERE NAME= NLS_CHARACTERSET ; SQLMIT; 注意 修改后必须重新启动数据库 配置才起作用 然后将从Oracle 导出的数据 导入Oracle 的数据库中即可 lishixinzhi/Article/program/Oracle/201311/17003

Oracle中如何判断一个字符串是否含有汉字

有个办法可以试试。

汉字占两个字符,也就是说如果length(字段)的长度不等于lengthb(字段)的长度,那么就应该是存在汉字。


网页标题:oracle如何查询汉字 oracle简单查询
地址分享:http://scyanting.com/article/doooeep.html