13

sysobjects documentationによると、sysobjects.xtype次のオブジェクト タイプのいずれかになります。

| xtype |              Description              |
|-------|---------------------------------------|
| AF    |  Aggregate function (CLR)             |
| C     |  CHECK constraint                     |
| D     |  Default or DEFAULT constraint        |
| F     |  FOREIGN KEY constraint               |
| L     |  Log                                  |
| FN    |  Scalar function                      |
| FS    |  Assembly (CLR) scalar-function       |
| FT    |  Assembly (CLR) table-valued function |
| IF    |  In-lined table-function              |
| IT    |  Internal table                       |
| P     |  Stored procedure                     |
| PC    |  Assembly (CLR) stored-procedure      |
| PK    |  PRIMARY KEY constraint (type is K)   |
| RF    |  Replication filter stored procedure  |
| S     |  System table                         |
| SN    |  Synonym                              |
| SQ    |  Service queue                        |
| TA    |  Assembly (CLR) DML trigger           |
| TF    |  Table function                       |
| TR    |  SQL DML Trigger                      |
| TT    |  Table type                           |
| U     |  User table                           |
| UQ    |  UNIQUE constraint (type is K)        |
| V     |  View                                 |
| X     |  Extended stored procedure            |

それらをCASEステートメントに入れることはできますが、そのxtype説明を検索するために参加できるテーブルはありますか? 私systypesはそのテーブルではないことを知っています。つまり、私はそれらの多くを暗記しただけですが、データベースについていくつかの調査を行っており、それは私にとってなじみのないものです (つまり、それについてはあまり知りません) ので、構築したいと思いますその説明をCASEステートメントなしでこのクエリに追加します。

select object_name(c.id), c.name, [length], o.xtype from syscolumns c
    join sysobjects o on o.id = c.id
where c.name like '%job%code%'
アップデート

以下は、SQLMenace による回答後の最終結果です。ただのストレートではないので、ここに置く必要があると感じましたjoin

select object_name(c.id), c.name, t.name, c.[length], o.xtype, x.name from syscolumns c
    join sysobjects o on o.id = c.id
    join systypes t on t.xtype = c.xtype
    join master..spt_values x on x.name like '%' + o.xtype + '%' and x.type = 'O9T'
where c.name like '%job%code%'
order by c.xtype
4

2 に答える 2

15

これがあります

SELECT name 
FROM master..spt_values
WHERE type = 'O9T'

出力

AF: aggregate function
AP: application
C : check cns
D : default (maybe cns)
EN: event notification
F : foreign key cns
FN: scalar function
FS: assembly scalar function
FT: assembly table function
IF: inline function
IS: inline scalar function
IT: internal table
L : log
P : stored procedure
PC : assembly stored procedure
PK: primary key cns
R : rule
RF: replication filter proc
S : system table
SN: synonym
SQ: queue
TA: assembly trigger
TF: table function
TR: trigger
U : user table
UQ: unique key cns
V : view
X : extended stored proc
sysobjects.type, reports
于 2013-04-26T19:35:00.820 に答える
1

これは、データベース オブジェクトとその説明の合計を取得するために思いついたものです。

    select xtype1, Description, total_count, last_crdate, last_refdate 
    from 
    (SELECT xtype as xtype1, total_count = COUNT(*), last_crdate = MAX(crdate), last_refdate = MAX(refdate)
     FROM sysobjects 
     GROUP BY xtype
     )o
    left outer join 
    (SELECT LEFT(name,PATINDEX('%:%',name)-1) AS xtype2, RIGHT(name, (LEN(name) - PATINDEX('%:%',name))) AS Description
    FROM master..spt_values 
    WHERE type = 'O9T' AND number  = -1
    )x 
    on o.xtype1 = x.xtype2
    order by Description;
于 2018-04-13T16:02:11.557 に答える