zoukankan      html  css  js  c++  java
  • SQL语句中的N'xxxx'意思-如N'string'

    SQL语句中的N'xxxx'是什么意思

    我们在一些sql存储过程,触发器等中经常会见到类似 N'xxxx' 是什么意思?

    例如:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_getProByIdAndName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[sp_getProByIdAndName]

    REPLACE(@pstrin, N''''N'''''')

    -----------------------------------------------------------------------------------------------------------------------

    Answer:

    N'xxx' 标识将单引号中的xxx强制转换为Unicode编码的字符,不用在中文情况下会出现乱码.

    因为在英文中常用的是ASCII码(一个字符占一个字节),而我们用的中文一个汉字就要占两个字节所以要用N'xxx'强制转换为Unicode编码的字符,这样单引号中不管是英文字符还是汉字一个都占两个字节,统一起来,不会出现乱码!

    SQL语句中的N'xxxx'是什么意思

     

    加上 N 代表存入数据库时以 Unicode 格式存储。
    N'string'  表示string是个Unicode字符串

    Unicode 字符串的格式与普通字符串相似,但它前面有一个 N 标识符(N 代表 SQL-92 标准中的国际语言 (National Language))。N 前缀必须是大写字母。例如,'Michél' 是字符串常量而 N'Michél' 则是 Unicode 常量。Unicode 常量被解释为 Unicode 数据,并且不使用代码页进行计算。Unicode 常量确实有排序规则,主要用于控制比较和区分大小写。为 Unicode 常量指派当前数据库的默认排序规则,除非使用 COLLATE 子句为其指定了排序规则。Unicode 数据中的每个字符都使用两个字节进行存储,而字符数据中的每个字符则都使用一个字节进行存储。有关更多信息,请参见使用 Unicode 数据。

    Unicode 字符串常量支持增强的排序规则。

  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/kevin1988/p/3505903.html
Copyright © 2011-2022 走看看