如何使用括號和所有內(nèi)容獲取 SQL Server 列定義?
How can I get SQL Server column definition with parentheses and everything?(如何使用括號和所有內(nèi)容獲取 SQL Server 列定義?)
本文介紹了如何使用括號和所有內(nèi)容獲取 SQL Server 列定義?的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
限時(shí)送ChatGPT賬號..
我需要一種聰明的方法來以可在 CREATE TABLE 語句中使用的方式從 INFORMATION_SCHEMA.COLUMNS 中獲取數(shù)據(jù)類型.問題是需要理解的額外"字段,例如 NUMERIC_
PRECISION 和 NUMERIC_
SCALE.
顯然,我可以忽略 INTEGER 的列(精度為 10,小數(shù)位數(shù)為 0),但還有其他類型我會感興趣,例如 NUMERIC.因此,無需編寫大量代碼來解析表,是否有任何關(guān)于如何從列定義中獲取某種字段速記的想法?
我希望能夠得到類似的東西:內(nèi)部,約會時(shí)間,錢,數(shù)字**(10,2)**
解決方案
這是 GalacticCowboy 的回答的更新(抄襲!)
a> 修復(fù)一些問題并更新所有(我認(rèn)為)SQL Server 2008R2 數(shù)據(jù)類型:
選擇數(shù)據(jù)類型+案件當(dāng) data_type 像 '%text' 或 data_type in ('image', 'sql_variant' ,'xml')然后 ''當(dāng) data_type in ('float')然后 '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ')'當(dāng) data_type in ('datetime2', 'datetimeoffset', 'time')然后 '(' + cast(coalesce(datetime_precision, 7) as varchar(11)) + ')'當(dāng) data_type in ('decimal', 'numeric')然后 '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ',' + cast(coalesce(numeric_scale, 0) as varchar(11)) + ')'當(dāng) (data_type like '%binary' 或 data_type like '%char') 和 character_maximum_length = -1然后'(最大)'當(dāng) character_maximum_length 不為空時(shí)然后 '(' + cast(character_maximum_length as varchar(11)) + ')'別的 ''以 CONDENSED_TYPE 結(jié)尾, *來自 information_schema.columns按 table_schema、table_name、ordinal_position 排序
I need a smart way to get the data types out of INFORMATION_SCHEMA.COLUMNS in a way that could be used in a CREATE TABLE statement. The problem is the 'extra' fields that need to be understood, such as NUMERIC_
PRECISION and NUMERIC_
SCALE.
Obviously, I can ignore the columns for INTEGER (precision of 10 and scale of 0), but there are other types I would be interested in, such as NUMERIC. So without writing lots of code to parse the table, any ideas on how to get a sort of field shorthand out of the column definition?
I would like to be able to get something like :
int,
datetime,
money,
numeric**(10,2)**
解決方案
Here is an update (ripoff!) of GalacticCowboy's answer to fix some issues and update for all (I think) SQL Server 2008R2 datatypes:
select data_type +
case
when data_type like '%text' or data_type in ('image', 'sql_variant' ,'xml')
then ''
when data_type in ('float')
then '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ')'
when data_type in ('datetime2', 'datetimeoffset', 'time')
then '(' + cast(coalesce(datetime_precision, 7) as varchar(11)) + ')'
when data_type in ('decimal', 'numeric')
then '(' + cast(coalesce(numeric_precision, 18) as varchar(11)) + ',' + cast(coalesce(numeric_scale, 0) as varchar(11)) + ')'
when (data_type like '%binary' or data_type like '%char') and character_maximum_length = -1
then '(max)'
when character_maximum_length is not null
then '(' + cast(character_maximum_length as varchar(11)) + ')'
else ''
end as CONDENSED_TYPE
, *
from information_schema.columns
order by table_schema, table_name, ordinal_position
這篇關(guān)于如何使用括號和所有內(nèi)容獲取 SQL Server 列定義?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!