`
ihuashao
  • 浏览: 4722308 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

使用 Unicode 的服务器端编程 (N前缀)--sql server 2005联机丛书

阅读更多

若要使数据库识别 Unicode,除了使用 nchar、nvarchar 和 ntext 数据类型定义 Unicode 存储外,还可以定义识别 Unicode 的客户端交互。可以通过在数据库服务器端执行下列操作来定义识别 Unicode 的客户端交互:

  • 在表列以及 CONVERT() 和 CAST() 操作中,将非 Unicode 数据类型转换为 Unicode 数据类型。
  • 使用 ASCII() 和 CHAR() 函数的 Unicode 等价函数 UNICODE() 和 NCHAR() 来替换它们。
  • 以 Unicode 格式定义存储过程和触发器的变量和参数。
  • 以字母 N 为前缀标识 Unicode 字符串常量。

使用 UNICODE()、NCHAR() 和其他函数

ASCII() 函数返回所传递字符的非 Unicode 字符代码。因此,在为非 Unicode 字符串使用 ASCII 函数的情况下为 Unicode 字符串使用等价函数 UNICODE()。对于 CHAR 函数也是如此;NCHAR 是其 Unicode 的等价函数。

由于 SOUNDEX() 函数是基于英语拼音规则定义的,因此除非字符串只包含拉丁字符 A 到 Z 和 a 到 z,否则此函数对于 Unicode 字符串是没有意义的。

ASCII、CHAR 和 SOUNDEX 可以传递 Unicode 参数,但这些参数被隐式转换为非 Unicode 字符串。这可能导致处理之前 Unicode 字符丢失,因为这些函数在定义时对非 Unicode 字符串执行操作。

除了 UNICODE() 和 NCHAR() 函数以外,下列字符串操作函数会尽可能支持 Unicode:CHARINDEX()、LEFT()、LEN()、UPPER()、LOWER()、LTRIM()、RTRIM()、PATINDEX()、REPLACE()、QUOTENAME()、REPLICATE()、REVERSE()、STUFF()、SUBSTRING() 和 UNICODE()。这些函数接受 Unicode 参数,为 Unicode 字符串留出 2 字节的字符边界,并在输入参数为 Unicode 格式时使用 Unicode 排序规则进行字符串比较。

定义存储过程中的参数

使用 Unicode 数据类型定义参数可以保证客户端请求或输入在服务器上隐式转换为 Unicode 格式,并在处理中不被损坏。如果将参数指定为 OUTPUT 参数,Unicode 类型也可以在其返回到客户端时使损坏的几率降到最低程度。

在以下存储过程中,变量作为 Unicode 数据类型声明。

CREATE PROCEDURE Product_Info
    @name nvarchar(40)
AS
SELECT p.ListPrice, v.Name
    FROM Production.Product p 
        INNER JOIN Purchasing.ProductVendor pv
            ON p.ProductID = pv.ProductID  
        INNER JOIN Purchasing.Vendor v
            ON pv.VendorID = v.VendorID
WHERE p.Name = @name;

使用 N 前缀

在服务器上执行的代码中(例如在存储过程和触发器中)显示的 Unicode 字符串常量必须以大写字母 N 为前缀。即使所引用的列已定义为 Unicode 类型,也应如此。如果不使用 N 前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。

例如,在前面示例中创建的存储过程可以按以下方式在服务器上执行:

EXECUTE Product_Info @name = N'Chain'

使用 N 前缀的要求适用于服务器上产生的字符串常量和从客户端发送的字符串常量。

分享到:
评论

相关推荐

    sqlserver2005和2008的jar包

    在Java编程环境中,与SQL Server交互通常需要使用特定的驱动,即JDBC(Java Database Connectivity)驱动。这里提到的"sqlserver2005和2008的jar包"就是用于连接SQL Server 2005和2008数据库的Java驱动程序。 1. ...

    sqlserver jdbc driver v2.0 for sqlserver 2005,2008

    总结,SQL Server JDBC Driver v2.0是针对SQL Server 2005和2008的Java开发者的重要工具,它提供了高效、稳定且全面的数据库连接功能,使得Java应用程序能够充分利用SQL Server的功能并进行无缝集成。在实际开发中,...

    sql server 2005 数据类型

    SQL Server 2005 数据类型是数据库设计的基础,它决定了数据如何被存储和处理。在SQL Server 2005中,数据类型分为两大类:字符串数据类型和数值数据类型。 1. 字符串数据类型: - `char`: 定长字符串,存储1到...

    SQL Server 2005 Driver for JDBC

    SQL Server 2005 Driver for JDBC是一款由微软公司开发的Java数据库连接(JDBC)驱动程序,专门用于Java应用程序与Microsoft SQL Server 2005数据库之间的通信。这款驱动程序实现了Java Database Connectivity (JDBC...

    修改SQL Server 2005 sa用户密码的方法

    - `sp_password`是SQL Server早期版本的一个存储过程,但在SQL Server 2005中仍然可用。 - 确保使用正确的参数顺序:旧密码、新密码、登录名。 #### 四、使用sp_change_users_login存储过程 1. **更新用户登录**...

    SQL SERVER2005数据库培训

    ### SQL Server 2005 数据库培训知识点详解 #### 一、SQL Server 2005 版本概述 SQL Server 2005 是微软发布的一款关系型数据库管理系统,广泛应用于各种规模的企业和组织中。根据描述,本次培训的目标是让学员...

    wxPython2.8-win64-unicode-2.8.12.1-py27 wxPython2.8-win32-unicode-2.8.12.1-py27

    标题中的"wxPython2.8-win64-unicode-2.8.12.1-py27"和"wxPython2.8-win32-unicode-2.8.12.1-py27"表示两个不同平台的wxPython版本。"win64"指的是适用于64位Windows系统的版本,而"win32"则对应32位Windows系统。...

    T-SQL编程与应用

    T-SQL,全称Transact-SQL,是SQL Server所使用的扩展SQL语言,用于执行数据库查询、更新、事务处理等多种任务。 T-SQL语言的基础编程功能包括ANSI SQL-92标准的四大组成部分:DDL(数据定义语言),DML(数据操纵...

    数据库SQLServer2005

    ### 数据库SQL Server 2005:SQL语句与常用操作详解 ...以上是基于SQL Server 2005的SQL语句和操作的详细介绍,涵盖了创建数据库、表、查询、插入、删除、更新等基本操作,以及数据类型的使用方法和一些高级功能。

    Microsoft SQL Server 2005 中的国际功能

    【Microsoft SQL Server 2005 中的国际功能】 Microsoft SQL Server 2005 是一个全球化的数据库管理系统,特别注重对多语言环境的支持。它建立在 SQL Server 2000 的基础上,增强了Unicode和XML的支持,并通过SQL ...

    C# 开发SQLSERVER数据库自动建表

    本文将深入探讨如何使用C#编程语言来自动化SQL Server数据库的建表过程,特别是涉及处理中文字段及其拼音首字母转换。 标题“C# 开发SQLSERVER数据库自动建表”表明我们将讨论一个使用C#开发的程序,该程序可以自动...

    SQL Server数据库与Java类型对照.doc

    在进行数据库开发时,尤其是在使用 SQL Server 作为后端数据库并与 Java 应用程序进行交互时,了解 SQL Server 的数据类型与 Java 数据类型的对应关系非常重要。这种对应关系有助于确保数据在数据库与应用程序之间...

    SqlDbx Professional 6.17 (ANSI+UNICODE)

    Version 6.17 (11 Sep, 2022) Fixes Added support for Oracle 21c Improved diagnostic messages and error reporting Fixed couple issues with Intellisense ...SqlDbx64U.exe - 64 bit UNICODE version

    SQL Server JDBC Jar包

    在这个4.0版本的JDBC驱动中,开发者可以支持从Java应用连接到SQL Server2008R2、SQL Server2008、SQL Server2005以及SQL Server2000等不同版本的数据库。 JDBC(Java Database Connectivity)是由Sun Microsystems...

    sql server 中 BCP使用方法详解

    "sql server 中 BCP 使用方法详解" BCP(Bulk Copy Program)是 SQL Server 中负责导入导出数据的一个命令行工具,它是基于 DB-Library 的,并且能以并行的方式高效地导入导出大批量的数据。BCP 可以将数据库的表或...

    sqlserver.jar驱动下载

    在Java编程中,JDBC(Java Database Connectivity)接口提供了一套标准的API,允许开发者通过Java代码与各种数据库进行交互,包括SQL Server。本压缩包提供了适用于SQL Server 2000、2005和2008版本的JDBC驱动,名为...

    sqlserver-oracle 数据类型对照

    - `nchar`和`nvarchar`在SQL Server中对应Oracle的`NCHAR`和`NVARCHAR2`,用于存储Unicode字符。 - `text`和`ntext`在SQL Server中对应Oracle的`CLOB`和`NCLOB`,用于存储大量文本数据。 - `image`在SQL Server中...

    arcgis js api 使用的字体,arial-unicode-ms-regular和bold

    在这样的情况下,将"arial-unicode-ms-regular"和"arial-unicode-ms-bold"这两个字体文件提前下载并部署到本地服务器,可以确保地图应用中的文本正确显示,而不会因为缺少字体而导致显示异常。 在实际应用中,使用...

Global site tag (gtag.js) - Google Analytics