MSSql中ntext与nvarchar相等比较

在MS Sql数据库中,如果table中的某column数据类型设计为ntext或者text,做查询匹配时,用=操作会引起:

  The data types ntext and varchar are incompatible in the equal to operator.

因为 用‘’引起来的字符串默认的数据类型为nvarchar,ntext类型的数据与nvarcahr类型数据不能直接做比较。

  比如,如下一个查询:

  select * from myTable where myColumnOne = ‘some value‘

  其中,myColumnOne数据类型为ntext,执行该语句后,就会出现上述红色标记的错误。

  解决办法:

  1. 类型转换

  将所要匹配的字段转换成相同的数据类型,对例中可改写为:

  select * from myTable where cast( myColumnOne as nvarchar(max) ) = ‘some value‘

  转换的长度可以根据实际情况进行指定,或者使用最大值max由sql自己处理。

  2. Like关键字

  like关键字做条件查询已经很熟悉,对例中进行改写:

  select * from myTable where myColumnOne like ‘some value‘

  3. Patindex

  此关键字是在sql2005中引入的,在条件查询中用于模式匹配,对例中改写:

  select * from myTable where patindex( ‘some value‘, myColumnOne ) > 0

MSSql中ntext与nvarchar相等比较

时间: 2024-11-07 20:05:52

MSSql中ntext与nvarchar相等比较的相关文章

mysql中的varchar转mssql中nvarchar

1:将数据库多用户改为单用户 ALTER DATABASE db_database SET SINGLE_USER WITH ROLLBACK IMMEDIATE 2: 执行完第一条sql后续关闭所有查询窗口 sqlmanagement中选择库,右键,属性,选项,排序规则,Chinese_PRC_90_CI_AI 3: 改为多用户 ALTER DATABASE db_database SET MULTI_USER 在mysql中varchar   转到了mssql中就是nvarchar  n就是

说说你所熟知的MSSQL中的substring函数

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

SQL中varchar和nvarchar有什么区别?

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间.

MSSQL中存储过程的可选参数的定义和使用

可选参数的存在,可以极大的降低代码的重复冗余.在数据库开发中,也是如此.现在针对MSSQL中存储过程的可选参数的定义和使用进行基本的介绍,留作备忘. #准备工作: 在db_test中建立一张测试表T_test: USE db_test; CREATE TABLE dbo.T_test ( Id  INT  IDENTITY(1,1) NOT NULL ,Name  NVARCHAR(20)  NOT NULL ,Sex  BIT  DEFAULT(0) ); 插入一些数据: INSERT INT

oracle中varchar,varchar2,nvarchar,nvarchar2的区别

--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2

消息 xxx,级别 16,状态 x,过程 sp_executesql,第 x 行 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

消息 xxx,级别 16,状态 x,过程 sp_executesql,第 x 行 过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'. 原来的语句: declare @createtablestr varchar(2000) set @createtablestr=' CREATE TABLE... 修改为 declare @createtablestr Nvarchar(2000) set @createtablestr=' CREATE TABLE

过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'

declare   @Sql Nvarchar(4000)   SET @Sql = ' select * from a_table '要么这样, 要不然在执行存储过程变量前加N'' ALTER PROCEDURE [dbo].[proc] as BEGIN --这里,varchar要改为nvarchar(4000) declare @Sql nvarchar(4000) SET @Sql = N' select * from a_table ' -- Insert statements for

MSSQL text/ntext 字段在读取时返回值不是String而是Object:net.sou

MSSQL text/ntext 字段在读取时返回值不是String而是Object: [email protected] 后来终于在网上找到了解决办法,只要在连接数据库的URL后边加上";useLOBs=false"这句就O了.

Mssql中一些常用数据类型的说明和区别

1.bigint 占用8个字节的存储空间,取值范围在-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)之间的19位整数,对应C#中的Int64/long 2.int 占用4个字节的存储空间,取值范围在-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)之间的10位整数,对应C#中的Int32/int 3.smallint 占用2个字节的存储空间,取值范围在-2^1