数据类型 text 和 varchar 在 equal to 运算符中不兼容。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型 text 和 varchar 在 equal to 运算符中不兼容。相关的知识,希望对你有一定的参考价值。

我的表里有一个text类型的字段ApplyArea,在代码里插入信息,给这个字段赋值的时候报如题的错。

网上也查了下很多资料,说用这样的方法:CONVERT(NVARCHAR(MAX),ApplyArea);
但是我有个疑问就是:我的text类型的数据可能会很长,转成nvarchar或者varchar后,长度不是变小了么,万一放不下我的text类型的数据怎么办?

text类型查询时不支持=,可以支持like,nvarchar(max)数据类型是新类型,长度与text相等
操作text类型的函数很特殊,所以自新版本以来,一般大数据类型都定义为max,弃用text追问

查了下说 sql server05以后引入的max,长度和text一样,最大都为2^31-1,暂时就先把text转成nvarchar(max)吧,等出了问题再说。

追答

呵呵, 不会出问题的,微软提示后续版本要摒弃text类型,所以尽可能的用nvarchar(max)类型吧

参考技术A

1、运算符【>】比较等号左边是否大于右边。

2、运算符【<】比较等号左边是否小于右边。

3、运算符【==】比较等号左边是否等于右边,或者是比较引用类型比较的是引用地址是否一致。

4、运算符【>=】比较等号左边是否大于等于右边。

5、运算符【<=】比较等号左边是否小于等于右边。

6、运算符【!=】比较等号左边是否不等于右边。

使用 varchar 代替 text 数据类型有啥好处? [复制]

【中文标题】使用 varchar 代替 text 数据类型有啥好处? [复制]【英文标题】:What advantage to use varchar instead of text data type? [duplicate]使用 varchar 代替 text 数据类型有什么好处? [复制] 【发布时间】:2017-07-28 15:50:45 【问题描述】:

我正在 PostgreSQL 上创建一个表,我知道该文件是 char 数据类型,但尽管我知道它最多可以存储 100 个字符,但我想知道下一个:

字符或字符变化而不是文本的优点是什么?

我认为我知道的

如果我没记错的话,字符是固定长度保留在内存中,而varchar是可变的,与Text数据类型相同。最后一个能够存储 1 GB 的数据,但最小为 0 kb,与 varchar 和 char 的最小值相同。

假设情况

然后,我猜我很懒惰,尽管我知道最多可以存储 100 个字符,但我使用文本,因为如果将来需要,它可以存储这 100 个字符甚至更多。如果不使用适当的数据类型,我会失去哪些特征?

【问题讨论】:

你的意思是“代替”,而不是“在前面”? 我希望固定 char 列的阅读速度最快。 @SergioTulentsev 不一定:***.com/q/31079819/479863。不确定这是否算作重复。 @muistooshort:啊,我当时在想mysql。 IIRC,那是真的。 没有太多我们可以添加到链接(优秀)的答案,但更多的上下文:varchar / character varying 是 ANSI 友好的,但不是缺少长度约束的表单. text 是 SQL 的常用扩展,但并非所有供应商都支持它。此外,在 PostgreSQL 中,text 是字符串类型类别的默认(“首选”)类型。见:select * from pg_type where typcategory = 'S' 【参考方案1】:

VARCHAR 和 TEXT 没有明显区别:

PostgreSQL: Difference between text and varchar (character varying)

【讨论】:

以上是关于数据类型 text 和 varchar 在 equal to 运算符中不兼容。的主要内容,如果未能解决你的问题,请参考以下文章

数据库:CHAR,VARCHAR,TEXT,ENUM ,SET,BINARY,VARBINARY 列的完整性约束

mysql中char,varchar与text类型的区别

mysql中char,varchar与text类型的区别和选用

数据类型text 和varchar在 equal to运算符中不兼容

MySql 5.0 以上版本的varchar和text数据类型可以存的汉字个数

System.Data.SqlClient.SqlException: 数据类型 text 和 varchar 在 equal to 运算符中不兼容。