sql语法中u‘‘ n‘‘详解

简介: sql语法中u‘‘ n‘‘详解

今天翻阅视图的时候,发现sql语句中有N'' U''这样的语法,不懂什么意思,于是搜索了一下,得出如下结论。

例子:

select U'中文' from dual;
select N'中文' from dual;

image.gif

那么语句中的N以及U分别代表什么意思?

N 在这里表示 Unicode,就是双字节字符。对于西文字符,用一个字节来存储过足够了,对于东方文字字符,就需要两个字节来存储。Unicode 为了统一、规范、方便、兼容,就规定西文字符也用两个字节来存储。

也就是说加 N 就表示字符串用 Unicode 方式存储。对应的就是 NCHAR 和 NVARCHAR2 类型。再比如:

select @status = N'stopped'
select @status = 'stopped'

image.gif

实际上上述两句赋值的结果是一样的,因为变量类型就是 nvarchar(Unicode 类型)。

而有些地方(比如:sp_executesql 的参数)不能自动转换,所以需要加 N 了。

那这个东东的作用是啥呢?

1.在做union all的时候,如果两个库的字符集不匹配,那会报错,可以用u和n进行转化。

下面这条sql就会报错

select
  u''
from a.dual
union
select
  ''
from b.dual
--ORA-12704: 字符集不匹配

image.gif

需要修改为:

select
  u''
from dual
union
select
  u''
from dual

image.gif

2.insert 和update的时候,在有的数据库不加N就会是乱码

insert into replies values(replies_seq.nextval,N'顶',sysdate,2);

image.gif

综上。

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
TiDB支持的SQL语法概述
【2月更文挑战第28天】本章将对TiDB所支持的SQL语法进行概述,涵盖其主要的语法特性和功能。我们将从基本的SQL语句到更复杂的查询和操作,逐步介绍TiDB的SQL语法,帮助读者更好地理解和使用TiDB进行数据库操作。
|
3月前
|
SQL 存储 数据管理
阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
【2月更文挑战第9天】阿里云视觉智能开放平台的逻辑数仓基于统一的SQL语法
60 2
|
5月前
|
SQL Oracle 关系型数据库
SQL 中的运算符与别名:使用示例和语法详解
IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写
213 0
|
5月前
|
SQL Oracle 关系型数据库
|
5月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
90 0
|
2月前
|
SQL 数据库
sql server中创建数据库和表的语法
sql server中创建数据库和表的语法
19 1
|
2月前
|
SQL 存储 关系型数据库
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
|
4天前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
|
6天前
|
SQL 数据库
SQL数据库基础语法-查询语句
SQL数据库基础语法-查询语句
|
6天前
|
SQL 存储 数据库
SQL数据库基础语法-增删改
SQL数据库基础语法-增删改
SQL数据库基础语法-增删改