原因:

PLSQL乱码问题皆是ORACLE服务端字符集编码与PLSQL端字符集编码不一致引起。类似乱码问题都可以从编码是否一致上面去考虑。

解决:

1. 查询Oracle服务端字符集编码,获取NLS_CHARACTERSET字段值:

执行

1
2
sql代码 
select * from v$nls_parameters
          保存查询到的值,如:NLS_CHARACTERSET = AL32UTF8

2. 查询Oracle服务端语言信息:

执行

1
2
3
4
sql代码 
NLS_CHARACTERSET 
SELECT 'AMERICAN_AMERICA.' || PROPERTY_VALUE 
FROM DATABASE_PROPERTIES

   保存查询到的值,如:AMERICAN_AMERICA.AL32UTF8

       3. 设置本地环境变量。(PLSQL优先从环境变量中获取属性)

   右击 我的电脑 -> 属性 -> 告警系统属性 -> 高级 -> 环境变量 -> 系统变量栏

   新增如下两条记录:

1
2
3
NLS_CHARACTERSET = AL32UTF8
 
NLS_LANG = AMERICAN_AMERICA.AL32UTF8

4. 重启PLSQL,OK。

设置环境变量 重启PLSQL

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

原因:

客户端与服务器端编码不一致

了解下NLS_LANG的知识

NLS_LANG 参数组成 NLS_LANG=<Language>_<Territory>.<Clients Characterset>

查看Oracle服务端编码:select * from sys.nls_database_parameters;

查看client编码:select * from sys.nls_session_parameters;

从下面服务端 编码我们可以得到: NLS_LANG = AMERICAN_AMERICA.AL32UTF8

查看oracle服务端编码:select * from sys.nls_database_parameters;

NLS_LANGUAGE  AMERICAN NLS_TERRITORY  AMERICA NLS_CURRENCY  $ NLS_ISO_CURRENCY  AMERICA NLS_NUMERIC_CHARACTERS  ., NLS_CHARACTERSET  AL32UTF8 NLS_CALENDAR  GREGORIAN NLS_DATE_FORMAT  DD-MON-RR NLS_DATE_LANGUAGE  AMERICAN NLS_SORT  BINARY NLS_TIME_FORMAT  HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT  DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT  HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT  DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY  $ NLS_COMP  BINARY NLS_LENGTH_SEMANTICS  BYTE NLS_NCHAR_CONV_EXCP  FALSE NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_RDBMS_VERSION 11.2.0.1.0

查看client编码   :select * from sys.nls_session_parameters; NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CURRENCY ¥ NLS_ISO_CURRENCY CHINA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE SIMPLIFIED CHINESE NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY ¥ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE

明显客户端的编码和服务器端 的不一致!!!!解决办法:

设置环境变量 重启PLSQL

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

此方法也适合用exp imp !以免中文有乱码出现!或部分数据乱码!

WINNT>   set NLS_LANG=AMERICAN_AMERICA.AL32UTF8Linux>    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

查看 NLS_LANG 的方法 Windows使用:echo %NLS_LANG%

C:\Users\Administrator>echo %NLS_LANG% AMERICAN_AMERICA.AL32UTF8

修改db编码的办法:(在oracle 11g上通过测试) --风险操作....最好不要用!!!!!!!! SQL> conn system as sysdba; SQL> shutdown immediate; SQL> startup mount; SQL> alter system enable restricted session; SQL> alter system set job_queue_processes=0; SQL> alter database open; SQL> alter database character set internal_use AL32UTF8; SQL> shutdown immediate; SQL> startup

--转自冰雪飞燕

解决PLSQL查不到带中文条件的记录的更多相关文章

  1. PLSQL显示乱码-无法进行中文条件查询解决

    PLSQL显示乱码-无法进行中文条件查询解决 原因: PLSQL乱码问题皆是ORACLE服务端字符集编码与PLSQL端字符集编码不一致引起.类似乱码问题都可以从编码是否一致上面去考虑. 解决: 1. ...

  2. plsql查找不到带中文的纪录

    今天在另外的电脑用plsql查询不到带中文的记录 select * from test where name like '%测试%' 然后发现是系统的环境变量还没设置好所造成的.在系统变量加入如下变量 ...

  3. 【转】如何解决plsql查询oracle数据库语句where条件带有中文无法匹配结果

    一.问题描述 之前使用PLSQL查询oracle数据库可以正常查询统计结果,由于换了个电脑,重新安装之后,同样的sql查询语句同一个数据库,无法正常查询结果,如下图所示 二.解决办法 1. 查询数据当 ...

  4. PL/SQL Developer 使用中文条件查询时无数据的解决方法(转)

    原文地址: PL/SQL Developer 使用中文条件查询时无数据的解决方法 PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:sel ...

  5. PL/SQL Developer 使用中文条件查询时无数据的解决方法

    PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:select userenv('language') from dual; 显示:SIM ...

  6. 解决PLSQL Developer 插入中文 乱码问题(转)

    原文地址:解决PLSQL Developer 插入中文 乱码问题 PLSQL Developer 插入中文 乱码问题,如图     这个是由于oracle服务器端字符编码 和 Oracle 客户端 字 ...

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

    今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下 ...

  8. PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法

    PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG在客户端不能确定的解决办法 1.检查服务器的字符编码 Select * from V$NLS_PARAMETE ...

  9. android 发送url带中文出现乱码怎么解决

    上传的时候参数中带中文的时候发送参数的时候就有可能出现乱码,这种情况怎么解决呢,就是设置url的格式为utf-8 httpRequest.setEntity(new UrlEncodedFormEnt ...

随机推荐

  1. mybatis-plus查询指定字段

    show me the code :mybais-plus版本:3.1.1 1,排除某些字段,可以同时排除多个字段排除多个字段写法: .setEntity(new User()) .select(c ...

  2. mybatis替换成mybatisplus后报错mybatisplus Invalid bound statement (not found):

    项目原来是mybatis,之后由于生成代码不方便,觉得替换成mybatisplus,引入mybatisplus后,启动项目报错mybatisplus Invalid bound statement ( ...

  3. Java学习(二十二)

    学了一个在css中叫font的样式: 感觉还是挺好用的 不过要注意如果把font放在最后,其他会使用默认值,可能会覆盖掉前面的 例如新学的行高 在font中语法是 font:30px/40px &qu ...

  4. 博主日常工作中使用的shell脚本分享

    前言: 今天给大家分享一篇在我工作中常用的一个shell脚本,里面有一些我们常用到的shell操作.该脚本用于本地电脑和服务器交互上,实现以下功能: 自动拉取自己个人电脑上的源码到服务器上yocto包 ...

  5. 数据库学习笔记 - MySQL基础知识

    一.数据库基础知识 1.1 Whats's 数据库 数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 数据 ...

  6. 【linux系统】命令学习(一)ssh

    ssh 1.在终端执行命令  ssh -p22 username@host 2.密码输入是看不到内容的 3.登入成功后默认进入的是home目录,就是根目录下的home目录 4.[root@VM-4-1 ...

  7. [hdu7023]Yet Another Matrix Problem

    关于$f(x)$的条件,将$C=A\times B$代入,即$\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{r}A_{i,k}B_{k,j}=x$ 调换枚举顺序,即$ ...

  8. [cf1515G]Phoenix and Odometers

    显然这条路径只能在$v_{i}$所在的强连通分量内部,不妨仅考虑这个强连通分量 对这个强连通分量dfs,得到一棵外向树(不妨以1为根) 考虑一条边$(u,v,l)$,由于强连通,总存在一条从$v$到$ ...

  9. [luogu7468]愤怒的小N

    定义$count(x)$为$x$二进制下1的个数,答案即$\sum_{0\le x<n,count(x)\equiv 1(mod\ 2)}f(x)$ 考虑预处理出$S_{k,i,p}=\sum_ ...

  10. [bzoj1005]明明的烦恼

    根据purfer序列的原理,每一个purfer序列都一一对应了一棵树,每一个点在purfer序列中出现的次数就是它的度数,那么直接用组合数去计算即可,注意要加高精度 1 #include<cst ...