0
我有這樣的代碼片段,我跟打(原諒的通用名稱):在多個字符輸入不是函數參數表的SQL
create function GetList
(@d1 varchar(3), @d2 varchar(3), @d3 varchar(3))
returns table
as
return
with List
as
(
select x.pattern
from (values (@d1), (@d2), (@d3)) as x(pattern)
)
select * from list
這最終將是一個用戶提供的名單,他們將用於查詢其他東西,但玩這個讓我好奇。如果我是運行
select * from GetList('1111111','222','333')
我會得到相同的結果,如果我只在3個字符每個輸入。由於我將varchar參數限制爲字符,其他字符是否完全被忽略?如果我有一個像這樣「溢出」的varchar參數,可能會發生任何潛在的不良情況(當然,除了字符串末尾的數據丟失外)
謝謝,我不知道是否有可能發生的一些常見的溢出錯誤。我這樣做的原因是'永遠不會低估用戶類型的情況:)。另外,我很好奇會發生什麼。 – wootscootinboogie
@wootscootinboogie如果你有用戶輸入的值,你可以做的一件事情,如果確保他們只能輸入3個字符。您可以使用子字符串等來糾正長度。 – Taryn
除非您不關心其餘部分,只是簡單地將其截斷爲3 –