我有这个我正在玩的代码片段(原谅通用名称):
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 参数,是否会发生任何潜在的麻烦(当然,字符串末尾的数据丢失除外)