varchar(MAX)--SQL2005的增强特性

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:


先说个问题:

看这样一个很简单的存储过程,接收有一个text类型的参数。

 

Code

 

在SQL 中调用

 

Code

 

大家知道,在SQL Server 2000中,VARCHAR的最大长度是8000,如果字符串的长度超过8000,保存在VARCHAR中时就会被截断。如果你需要传入的参数恰好很长,比如是一个xml,很多时候都会超过8000个字符。那怎么办呢?

DECLARE @largeText TEXT 是不行的,那我们怎么办呢?

在SQL Server 2000中,这的确是个很棘手的问题。不过幸运的是SQL Server 2005为我们提供了VARCHAR(MAX),它的最大长度可以达到2G,足够用了:)。而且,我们原先熟悉的字符串处理函数REPLACE,LTRIM等等也可以用了,多完美啊,呵呵

VARCHAR(MAX), NVARCHAR(MAX)和VARBINARY(MAX)是SQL Server 2005中引进的,可以作为TEXT, NTEXT和IMAGE的替代。

做个试验:

 

Code

LengthOfSmallVarChar

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

8000

 

Code

LengthOfMaxVarChar

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

8001

 

嗯,上面存储过程的难题也迎刃而解了:

 

Code

 

Perfect!!

 

不过还有一点是要注意的,VARCHAR和VARCHAR(MAX)混在一起做处理时还是会变成VARCHAR,从而可能被截断,所以需要全转成VARCHAR(MAX)

比如:

 

Code

 

结果会是怎么样呢?其实还是8000,但如果改成declare @str1 varchar(max)就对了。

 

 

 

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。




本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2008/09/12/1290230.html ,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
11天前
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
21 1
|
5月前
|
SQL XML Java
MyBatis的强大特性--动态SQL
MyBatis的强大特性--动态SQL
75 2
|
5月前
|
SQL 关系型数据库 MySQL
TiDB特有的SQL语法和特性
【2月更文挑战第28天】本章将深入探讨TiDB特有的SQL语法和特性,这些功能和优化是TiDB相较于传统关系型数据库所独有的。通过了解这些特性,读者将能更充分地利用TiDB的优势,优化数据库性能,提升业务处理效率。
|
SQL 存储 Oracle
【数据库05】玩转SQL的高阶特性 2
【数据库05】玩转SQL的高阶特性
|
SQL 存储 Java
【数据库05】玩转SQL的高阶特性 1
【数据库05】玩转SQL的高阶特性
|
消息中间件 SQL 存储
Flink1.9新特性解读:通过Flink SQL查询Pulsar
Flink1.9新特性解读:通过Flink SQL查询Pulsar
453 0
Flink1.9新特性解读:通过Flink SQL查询Pulsar
|
SQL Oracle 关系型数据库
MySQL多表查询,SQL,笛卡尔积等值连接自连接外连接,SQL99新特性,完整详细可收藏
MySQL多表查询,SQL,笛卡尔积等值连接自连接外连接,SQL99新特性,完整详细可收藏
383 0
MySQL多表查询,SQL,笛卡尔积等值连接自连接外连接,SQL99新特性,完整详细可收藏
|
SQL 关系型数据库 Linux
知识分享之PostgreSQL——OIDS的特性与新版本去除SQL
之前一直使用的PostgreSQL 9.6系列版本,由于官方不再维护了,就准备换成最新稳定版本的,查看了一下官方版本说明,发现13系列版本是目前稳定性较好的版本,于是兴冲冲的更换了过来,但随之而来的就是一些新特性,其中就比如表中的OID字段,这个字段是对象标识符,之前能用于行标记,现在发现只有表才具有这个隐藏字段,行数据没有这个支持了,于是就需要将老版本的表进行关闭掉这个字段。下面我们就开始关闭之旅。
159 0
知识分享之PostgreSQL——OIDS的特性与新版本去除SQL
|
SQL Java API
Flink 1.13.0 sql-client 新特性及源码分析
在 Flink 1.13.0 版本中增加了很多新特征,具体可以参考前面一篇文章,其中很重要的一点是对 sql-client 功能做了加强,支持了初始化脚本和执行 SQL 文件,SQL 客户端是直接运行和部署 SQL 流和批处理作业的便捷方法,而无需从命令行或作为 CI 的一部分来编写任何代码,这个版本大大改进了 SQL 客户端的功能。现在,SQL 客户端和SQL 脚本都支持 Java 应用程序可用的几乎所有操作(通过编程方式从 TableEnvironment 启动查询时)。这意味着 SQL 用户在其 SQL 部署中需要粘贴的代码变的更少.由于篇幅的原因这篇文章只会介绍 SQL CLIENT
Flink 1.13.0 sql-client 新特性及源码分析
ctfshow-萌新-web2( 利用intval函数特性配合SQL的特殊符号获取敏感数据 )
tf.show 萌新模块 web2关,此关卡使用intval()函数强制将参数转换成数值型,可以使用字符绕过,配合特殊符号控制SQL的查询结果,从而获取flag,这一关过滤了or,我们可以使用加号,减号,乘号,除号,或,左移等方式绕过
274 0
ctfshow-萌新-web2( 利用intval函数特性配合SQL的特殊符号获取敏感数据 )