如何在一个SQL语句中获取varchar [n]字段的大小?

Dan*_*don 67 sql varchar sql-server-2008

假设我有一个SQL表,其中包含一个名为"Remarks"的varchar [1000]字段.

我想制作一个SQL语句,该语句在执行时将返回1000,或者将来可能更改varchar字段的大小.

有点像SELECT size(Remarks) FROM mytable.

我该怎么做呢?

Nei*_*ght 106

select column_name, data_type, character_maximum_length    
  from information_schema.columns  
 where table_name = 'myTable'
Run Code Online (Sandbox Code Playgroud)

  • 如果要仅过滤一列,则可以指定附加子句`AND column_name ='Remarks'. (8认同)
  • `INFORMATION_SCHEMA`是ANSI标准的东西 - 根本不是MySQL或SQL Server特有的! (7认同)
  • 仅供参考,这是一个MySQL特定查询。 (2认同)

Mar*_*rcE 23

在SQL Server上具体:

SELECT DATALENGTH(Remarks) AS FIELDSIZE FROM mytable
Run Code Online (Sandbox Code Playgroud)

文档

  • 此语句返回已输入的数据的长度.我想要字段所包含的数据大小. (2认同)

Gre*_*inn 9

这将适用于 SQL SERVER...

SELECT COL_LENGTH('Table', 'Column')
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,这将返回以 *bytes* 为单位的长度,因此您必须将其减半以用于“NVARCHAR”或“NCHAR”。请参阅 https://docs.microsoft.com/en-us/sql/t-sql/functions/col-length-transact-sql (4认同)

Fra*_*ank 8

对于SQL Server(2008及以上版本):

SELECT COLUMNPROPERTY(OBJECT_ID('mytable'), 'Remarks', 'PRECISION');
Run Code Online (Sandbox Code Playgroud)

COLUMNPROPERTY返回列或参数(id,列/参数,属性)的信息.PRECISION属性返回列或参数的数据类型的长度.

COLUMNPROPERTY文档