SqlServer数据库长文本和二进制字段操作总结(54powerman原创)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: SqlServer数据库长文本和二进制字段操作总结(54powerman原创)--创建测试用表 Create Table TestnText (RowID Int Identity(1,1) Primary Key,Content nText) ...
SqlServer数据库长文本和二进制字段操作总结(54powerman原创)
--创建测试用表 Create Table TestnText (RowID Int Identity(1,1) Primary Key,Content nText) --读写nText文本,一定要用在事物中 Begin Tran DECLARE @ptrval varbinary(16) Select @ptrval=TEXTPTR(content) From TestnText Where RowID=1 --TEXTPTR函数以 varbinary 格式返回对应于 text、ntext 或 image 列的文本指针值。检索到的文本指针值可用于 READTEXT、WRITETEXT 和 UPDATETEXT 语句。 Select RowID,DATALENGTH(Content) From TestnText --要获取Content内容的长度要使用DATALENGTH函数来获取,结果为字节数 --要使用行文本指针,先获得指针 ReadText TestnText.Content @ptrval 1 10 --第一个参数为字段,一定要用表名限制字段, --第三个参数是开始读取 text、image 或 ntext 数据之前跳过的字节数,如果从开始选择为0 --第四个参数是选择的长度。是要读取数据的字节数(使用 text 或 image 数据类型时)或字符数(使用 ntext 数据类型时)。 --第五个参数可选,若值为HOLDLOCK,则表明使文本值一直锁定到事务结束。其他用户可以读取该值,但是不能对其进行修改。 SET TEXTSIZE 5 --如果此时指定TextSize则会限制以后的读取 ReadText TestnText.Content @ptrval 1 10 --由于上面指定了TextSize,所以此时返回了少于10个字节的数据,而只返回了5个字节 WriteText TestnText.Content @ptrval '请使用 WRITETEXT 来替换 text、ntext 和 image 数据,而用 UPDATETEXT 来修改 text、ntext 和 image 数据。UPDATETEXT 更灵活,因为它仅更改 text、ntext 或 image 列的某一部分,而不是整个列。如果数据库恢复模型简单或有大容量日志记录,则 WRITETEXT 是无日志记录的操作。这就意味着在将 text、ntext 或 image 数据写入数据库时,不会进行日志记录;因此,事务日志不会填满大量通常由这些数据类型组成的数据。为使 WRITETEXT 正常工作,列必须已经包含有效的文本指针。 如果该表没有行内文本,则在通过 INSERT 向 text 列中放入显式或隐式空值时,SQL Server 不初始化 text 列,从而节省了空间,而且不能获取这类空值的文本指针。若要将 text 列初始化为 NULL,请使用 UPDATE 语句。如果该表有行内文本,就没有必要为空值初始化文本列,而且您始终可以获取文本指针。与 WRITETEXT 相比,DB-Library dbwritetext 和 dbmoretext 函数以及 ODBC SQLPutData 函数速度较快且使用的动态内存较少。这些函数可以插入多达 2G 字节的 text、ntext 或 image 数据。' --第三个参数是要写入的文本, Set TextSize 0 --释放前面设定的TextSize设置 ReadText TestnText.Content @ptrval 0 100 UpdateText TestnText.Content @ptrval 3 1 '不要使' --第三个参数是以零为基的更新起始位置,或者说是插入数据的位置。 --第四个参数是是从 insert_offset 位置开始的、要从现有 text、ntext 或 image 列中删除的数据长度,或者要用新数据替换掉的数据长度。 ReadText TestnText.Content @ptrval 0 100 Select PATINDEX('%使用%', Content) From TestnText Commit /* 常用的函数: PATINDEX('%pattern%', expression) 返回给定字符串在 text 或 ntext 列中的字符位置。 DATALENGTH(expression) 返回 text、ntext 和 image 列的数据长度。 SET TEXTSIZE 返回可用 SELECT 语句返回的 text、ntext 或 image 数据的极限大小(以字节为单位)。 SUBSTRING(text_column, start, length) 返回由给定 start 偏移量和 length 所指定的 varchar 字符串。此长度应小于 8 KB。 TEXTVALID('table.column',text_ptr)一个 text、ntext 或 image 函数,用于检查给定文本指针是否有效。 */
相关实践学习
使用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
目录
相关文章
|
4天前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
125 1
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
3月前
|
存储 数据挖掘 数据库
数据库数据恢复—SQLserver数据库ndf文件大小变为0KB的数据恢复案例
一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库不可用。管理员试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库。
|
4月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
120 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
4月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
47 4
|
4月前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
83 11
|
5月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
518 3
|
5月前
|
SQL 关系型数据库 MySQL
SQL数据库和 SQLserver数据库
【8月更文挑战第19天】SQL数据库和 SQLserver数据库
73 2