私が遊んでいるこのコードスニペットがあります(一般的な名前を許してください):
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 パラメータがある場合に発生する可能性のある潜在的な不快感はありますか (もちろん、文字列の末尾でのデータの損失を除く)