簡體   English   中英

iif語句的數據類型

[英]datatype for an iif statement

如果在SELECT語句中有以下行:

iif(fr.BoundID=0,'OutBound','InBound') as 'FlightBound'

然后,當我執行CREATE TABLE語句時,應該在數據庫表中包含BoundID字段的實際數據類型(這是tinyint),還是應將數據類型設置為varchar,因為我認為(但不是100%肯定會查看現有代碼)如果ID為0,則編寫此代碼的先前人員會說顯示“ OutBound,InBound”?

在您的情況下,它將是VARCHAR(8) 您始終可以使用sys.dm_exec_describe_first_result_set檢查元數據:

SELECT *
FROM sys.dm_exec_describe_first_result_set(
   'SELECT iif(BoundID=0,''OutBound'',''InBound'') as ''FlightBound''
   FROM #tab',NULL,0)

LiveDemo

為新表TINYINTTextual representation選擇哪種數據類型取決於您的業務需求。 我可能會留在TINYINT (搜索名為BoundType之類的查找表或詢問高級開發人員/架構師)。

返回類型是true_valuefalse_value具有最高優先級的return types參考 ,請參閱return types

從true_value和false_value中的類型返回優先級最高的數據類型。 有關更多信息,請參見數據類型優先級(Transact-SQL)。

此處的數據類型優先於SQL Server 2016:

user-defined data types (highest)
sql_variant
xml
datetimeoffset
datetime2
datetime
smalldatetime
date
time
float
real
decimal
money
smallmoney
bigint
int
smallint
tinyint
bit
ntext
text
image
timestamp
uniqueidentifier
nvarchar (including nvarchar(max) )
nchar
varchar (including varchar(max) )
char
varbinary (including varbinary(max) )
binary (lowest)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM