我正在尝试使用SQL Server 2005中的SQL确定VARBINARY(MAX)
字段内容的字节大小。由于我怀疑没有本地支持,因此是否可以使用CLR集成进行操作?任何想法都将不胜感激。
SQL Server 2005 中 VARBINARY 字段的大小
原标题:
最佳回答
实际上,您可以在T-SQL中完成这个任务!
DATALENGTH(<fieldname>)
将适用于 varbinary(max)
字段。
问题回答
VARBINARY(MAX)字段可分配不超过接近2GB大小的可变长度数据。
你可以使用DATALENGTH()函数来确定列内容的长度。
例如:
SELECT DATALENGTH(CompanyName), CompanyName
FROM Customers
CREATE FUNCTION [dbo].[FileDataSizeUnit_FN] (@FileData VARBINARY(MAX))
RETURNS VARCHAR(3)
AS
BEGIN
DECLARE @Unit VARCHAR(3),
@ByteLen AS NUMERIC(16,2)
SET @ByteLen = ISNULL(DATALENGTH(@FileData),0)
SET @Unit = CASE WHEN @ByteLen < 1000 THEN B
WHEN @ByteLen < 100000 THEN KB
WHEN @ByteLen < 1000000000 THEN MB
ELSE GB END
RETURN @Unit
END
GO
CREATE FUNCTION [dbo].[FileDataSize_FN] (@FileData VARBINARY(MAX))
RETURNS NUMERIC(16,2)
AS
BEGIN
DECLARE @Size AS NUMERIC(16,2),
@ByteLen AS NUMERIC(16,2)
SET @ByteLen = ISNULL(DATALENGTH(@FileData),0)
SET @Size = CASE WHEN @ByteLen <1000 THEN @ByteLen
WHEN @ByteLen < 100000 THEN @ByteLen/1024.0
WHEN @ByteLen < 1000000000 THEN @ByteLen/1024.0/1024
ELSE CAST(@ByteLen/1024.0/1024/1024 AS NUMERIC(16,2)) END
RETURN @Size
END
GO
SELECT dbo.FileDataSize_FN(F.FileData) AS Size,
dbo.FileDataSizeUnit_FN(F.FileData) AS SizeUnit
FROM dbo.Files_Tbl F
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding