使用plsql时查询Oracle语句中文无法匹配问题

今天在使用plsql查询数据时查询一条sql语句,执行后什么结果都没有,起先还以为是sql语句写错了,因为先前会知道要查的表不可能没有数据的,于是自己又去服务器上用sqlplus查了一下,语法是正常的,一直不知道什么原因,后面找了一下发现是在plsql中Oracle的客户端字符集和服务器上的不一样,造成的中文无法匹配,先去服务器上查一下Oracle使用的字符集

SQL> select * from v$nls_parameters where parameter like ‘NLS_CH%‘;

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8

很明显服务器上使用的字符集是AL32UTF8,自己个人电脑是使用Windows系统,这样DOS系统的默认字符集和Unix系统的默认字符集不一样,这样只能去电脑中改下Oracle的环境变量,还有最好要匹配服务端的字符语言也是NLS开头的变量,在这里就不做过多的赘述了,修改也很简单打开我的电脑里属性中的高级系统配置下的环境变量修改下

这样变量赋值保存后再重新打开plsql查询包含中文的sql语句就正常了

时间: 2024-10-10 07:57:30

使用plsql时查询Oracle语句中文无法匹配问题的相关文章

使用PLSQL Developer和DbVisualizer查询oracle数据库时出现乱码

使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况. 查看了一下数据库编码格式select * from v$nls_parameters; 查看编码值为WE8ISO8859P1.而电脑环境变量NLS_LANG的值为AMERICAN_AMERICA.ZHS16GBK.更改为AMERICAN_AMERICA.WE8ISO8859P1之后重启工具就好了.如果没有此环境变量,可以新建一个,将编码值更改为一致. 我的机器到此就好使了,据说有的需

Oracle 用中文作为关键字查询无数据及sql loader 导入数据时数据分隔异常的解决办法

前提:电脑A使用sqlldr向电脑B中的Oracle批量导入数据.数据分隔及查询都正常. 拷贝A中的源数据及ctl文件到电脑C中,拷贝B中的Oracle安装文件并安装至电脑C中. 电脑C使用ctl将源文件导入本机Oracle中之后发现.导入的数据分隔错误,比如[email protected]@ccc格式的数据,sqlldr导入的时候用@分隔.但是实际导入结果并不是column1=aaa,column2=bbb, column3=ccc:有部分数据变成了[email protected],[em

Oracle 查询(SELECT)语句(二)

?  简介 在前面的 Oracle 查询 SELECT 语句(一) 中介绍了 SELECT 常用的一些基本查询语法,接下来再来看 SELECT 更深入的一些查询功能和技巧,包括以下内容: 1.   All 与 Any 运算符 2.   分页查询(rownum) 3.   集合操作符(UNION.UNION ALL.INTERSECT.MINUS) 1.   All 与 Any 运算符 1)   All 运算符,表示满足给出列表中的所有值.通常用于以下场景: 1.   查出大于30号部门所有员工最

查询oracle sql的执行计划时,一个很重要的视图--dba_hist_sql_plan

本文的编写得到枯荣长老的大力帮助,在此表示感谢. 本文适用的oracle db版本为oracle 10g或者更高版本. 之所以说这个视图很重要,是因为该视图中有一列是在awrsqrpt报告中没有的.这一列就是 filter_predicates列. SELECT plan_hash_value, TO_CHAR(RAWTOHEX(child_address)), TO_NUMBER(child_number), id, LPAD(' ', DEPTH) || operation operatio

hibernate连接mysql,查询条件中有中文时,查询结果没有记录,而数据库有符合条件的记录(解决方法)

今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下,发现不加条件查询可以查到,加上查询条件包含中文就无法找到记录. 百度发现,以下两篇文章很有帮助. http://gzxabcdefg.blog.163.com/blog/static/23451794201081554816892/ http://bbs.51cto.com/thread-1031

查询Oracle正在执行的sql语句

--查询Oracle正在执行的sql语句及执行该语句的用户 [sql] view plain copy SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value

plsql developer如何查询SQL语句执行历史记录(转)

相信很多在plsql developer调试oracle的朋友,经常会遇到在plsql developer执行的某一条SQL语句没有保存,那么我们在plsql developer下如何找到我们执行过的SQL语句呢,其实通过下列方法很容易实现. 首先打开plsql developer 工具,并新建SQL窗口,如下图 在SQL窗口,使用快捷键plsql developer中按ctrl+e 就会调出历史记录了,历史记录文件默认保存在C:\Users\Administrator\AppData\Roam

数据库where查询条件是中文时查找无结果的解决方法

数据库中是中文,但是查询条件是中文怎么也查不出来. 原来使用的数据库是英文版本的,所以数据库中的字段值是unicode编码的 首先看看字段类型是不是 : char ->nchar  varchar ->nvarchar  text ->ntext 然后在查询时加入N:select * form table where city=N'上海'

PLSQL中查询数据的时候查询结果显示中文乱码

要需要很努力才能看起来毫不费力..... 1.在PLSQL中查询数据的时候查询结果显示中文乱码 2.需要在环境变量中新建两个环境变量: 第一个: 设置 NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 第二个: 设置:LANG=zh_CN.GBK 3.之后重启PLSQL 再重新连接 乱码显示正常