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 –