我運行以下查詢(唯一的區別是我在第一種情況下施加一個固定柱和預聲明變量名在第二個。不同的結果集,儘管(貌似)等效的查詢
declare @name as varchar = 'directdebit'
select S.name as [Schema], T.name as [Table], 'Table' as Type
from sys.tables as T
inner join sys.schemas as S on S.schema_id = T.schema_id
where T.name like '%directdebit%'
select S.name as [Schema], T.name as [Table], 'Table' as Type
from sys.tables as T
inner join sys.schemas as S on S.schema_id = T.schema_id
where T.name like '%' + @name + '%'
當然,我也知道的字符串拼接不等同與計算機不同的匹配。但是,我得到三個不同的集大小,取決於我是否去無其中(256次點擊),如果我去連接其中(163命中)或者如果我去固定其中(45次點擊)。
究竟是什麼我不知道?如何在過濾之前強制表達式得到充分評估(添加括號沒有任何區別)。
這必須是字符串最常見的默認長度之一。一個*字符串*由它的定義應該**默認**不同於* char *!至少在我的頭上坐着一個C#開發人員的身體......爲了清晰起見。 –