當前位置:首頁 » 編程語言 » sql查找欄位說明
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql查找欄位說明

發布時間: 2023-07-19 16:06:08

1. 微軟的sql2005中如何用SQL語句查詢出將一個表的欄位的說明

查詢列信息的
--isnull函數:需要個參數,如果第一個參數為空,則賦值第二個參數。
SELECT
--空格代表as關鍵字
(case when a.colorder=1 then d.name else '' end) 表名,a.colorder 欄位序號,a.name 欄位名,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 標識,
(case when (SELECT count(*) FROM sysobjects WHERE (name in
(SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in
(SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in
(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name))))))) AND
(xtype = 'PK'))>0 then 'true' else 'false' end) 主鍵,b.name 類型,
a.length 佔用位元組數, COLUMNPROPERTY(a.id,a.name,'PRECISION') as 長度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小數位數,
(case when a.isnullable=1 then 'true'else 'false' end) 允許空,
isnull(e.text,'') 默認值, isnull(g.[value],'') AS 欄位說明
--a代表列集合表:為每個表和視圖中的每列返回一行,並為資料庫中的存儲過程的每個參數返回一行
--b代表列類型表:為資料庫中定義的每種系統提供的數據類型和每種用戶定義的數據類型返回一行。
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
--d代表對象表:在資料庫中創建的每個對象(例如約束、默認值、日誌、規則以及存儲過程)都對應一行
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
--e代表e.text是默認值:包含資料庫中每個視圖、規則、默認值、觸發器、CHECK 約束、DEFAULT 約束和存儲過程的項
left join syscomments e
on a.cdefault=e.id
--g代表g.[value]是欄位說明:針對當前資料庫中的每個擴展屬性返回一行。
left join sys.extended_properties g
on a.id=g.major_id AND a.colid = g.major_id
order by a.id,a.colorder

2. SQL查詢欄位的說明

查出表的各個欄位的所有屬性

SELECT
表名 = case when a.colorder=1 then d.name else '' end,
表說明 = case when a.colorder=1 then isnull(f.value,'') else '' end,
欄位序號 = a.colorder,
欄位名 = a.name,
標識 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主鍵 = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
類型 = b.name,
佔用位元組數 = a.length,
長度 = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小數位數 = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允許空 = case when a.isnullable=1 then '√'else '' end,
默認值 = isnull(e.text,''),
欄位說明 = isnull(g.[value],'')
FROM
syscolumns a
left join
systypes b
on
a.xusertype=b.xusertype
inner join
sysobjects d
on
a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join
syscomments e
on
a.cdefault=e.id
left join
sysproperties g
on
a.id=g.id and a.colid=g.smallid
left join
sysproperties f
on
d.id=f.id and f.smallid=0
where
d.name='要查詢的表' --如果只查詢指定表,加上此條件
order by
a.id,a.colorder

3. sql server 怎麼查詢數據欄位說明

SQL Server的注釋屬於擴展屬性,可以從sys.extended_properties視圖中查看
SELECT * FROM sys.extended_properties WHERE major_id=OBJECT_ID('WMSBASCUS')

結果是WMSBASCUS表所有列的注釋信息
minor_id是列的Id,可以從sys.columns中查看錶的列id
通過sys.extended_properties和sys.columns進行關聯可以查看某個具體列的信息

SELECT c.name,p.value

FROM sys.extended_properties p ,sys.columns c

WHERE p.major_id=OBJECT_ID('WMSBASCUS') and c.name='CUSTNO'
and p.major_id=c.object_id and p.minor_id=c.column_id

4. sql 查詢欄位中的前幾個字

可以使用:substr( string, start_position, [ length ] );string:源字元串;start_position:提取的位置,字元串中第一個位置始終為1;[ length ]:提取的字元數,如果省略,substr將返回整個字元串;

針對本例舉例說明:

select * from 表名wheresubstr([D],1,2)=「10」

語句功能說明:從指定表中查詢D欄位第1、2個字元為「10的記錄」。

(4)sql查找欄位說明擴展閱讀:

注意事項

語法:substr(string,start,length)

string參數:必選。資料庫中需要截取的欄位。

start參數:必選。

正數,從字元串指定位子開始截取;負數,從字元串結尾指定位子開始截取;0,在字元串中第一個位子開始截取。1,同理。(特殊)

length參數:可選。需要截取的長度。預設,即截取到結束位置。

注意:若必選參數為空,那返回的結果也為空。

5. 如何從SQL Server 中取得欄位說明

你可以在企業管理器中增加欄位說明,也可以使用下面的代碼:

EXEC sp_addextendedproperty
'MS_Description',
'some description',
'user',
dbo,
'table',
table_name,
'column',
column_name
現在,你就可以得到通過下面的代碼得到欄位說明:

SELECT
[Table Name] = i_s.TABLE_NAME,
[Column Name] = i_s.COLUMN_NAME,
[Description] = s.value
FROM
INFORMATION_SCHEMA.COLUMNS i_s
LEFT OUTER JOIN
sysproperties s
ON
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
AND s.smallid = i_s.ORDINAL_POSITION
AND s.name = 'MS_Description'
WHERE
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
-- AND i_s.TABLE_NAME = 'table_name'
ORDER BY
i_s.TABLE_NAME, i_s.ORDINAL_POSITION
如果你只關心某一張表,那麼上面的TSQL中的注釋部份對你就非常有幫助。反過來就會給你所有表中的所有欄位。

如果你只需要所有有說明的表,你可以把out join 改成 inner join

SELECT
[Table Name] = i_s.TABLE_NAME,
[Column Name] = i_s.COLUMN_NAME,
[Description] = s.value
FROM
INFORMATION_SCHEMA.COLUMNS i_s
INNER JOIN
sysproperties s
ON
s.id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME)
AND s.smallid = i_s.ORDINAL_POSITION
AND s.name = 'MS_Description'
WHERE
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0
ORDER BY
i_s.TABLE_NAME, i_s.ORDINAL_POSITION


SQL Server 2005

在SQL Server 2005 中 sysproperties 表已被廢棄,所以上面的代碼都不能用。幸運的是他們還是增加了一個系統表給我們 sys.extended_properties,這張表和 sysproperties基本上相似。

SELECT
[Table Name] = OBJECT_NAME(c.object_id),
[Column Name] = c.name,
[Description] = ex.value
FROM
sys.columns c
LEFT OUTER JOIN
sys.extended_properties ex
ON
ex.major_id = c.object_id
AND ex.minor_id = c.column_id
AND ex.name = 'MS_Description'
WHERE
OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0
-- AND OBJECT_NAME(c.object_id) = 'your_table'
ORDER
BY OBJECT_NAME(c.object_id), c.column_id

和SQL Server 2000一樣,你可以使用注釋部份來返回某一張表。

Microsoft Access

在Access中,你可以使用下面的ASP代碼來得到某一個欄位的說明

<%
on error resume next
Set Catalog = CreateObject("ADOX.Catalog")
Catalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=<path>\<file>.mdb"

dsc = Catalog.Tables("table_name").Columns("column_name").Properties("Description").Value

if err.number <> 0 then
Response.Write "<" & err.description & ">"
else
Response.Write "Description = " & dsc
end if
Set Catalog = nothing
%>